사용자 도구

사이트 도구


mssqlserver:jdbc

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
mssqlserver:jdbc [2018/05/15 15:34]
kwon37xi
mssqlserver:jdbc [2018/09/10 13:47]
kwon37xi [JDBC Driver 사용시 String 파라미터로인한 Full Scan 문제]
줄 1: 줄 1:
 ====== MS SQL Server JDBC ====== ====== MS SQL Server JDBC ======
   * [[:mssqlserver|MS SQL Server]] JDBC Driver   * [[:mssqlserver|MS SQL Server]] JDBC Driver
 +  * [[https://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-2017|Microsoft JDBC Driver for SQL Server Support Matrix]] JDBC 드라이버 지원 Java 버전 및 지원 기간.
   * [[https://docs.microsoft.com/en-us/sql/connect/jdbc/programming-guide-for-jdbc-sql-driver|Microsoft JDBC Driver for SQL Server]]   * [[https://docs.microsoft.com/en-us/sql/connect/jdbc/programming-guide-for-jdbc-sql-driver|Microsoft JDBC Driver for SQL Server]]
     * [[https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server|SQL Server 용 Microsoft JDBC Driver를 다운로드]]<code groovy>     * [[https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server|SQL Server 용 Microsoft JDBC Driver를 다운로드]]<code groovy>
줄 17: 줄 18:
 ===== Timeout ===== ===== Timeout =====
 설정값이 millisecond와 second가 섞여 있어서 매우 주의해야 함. 설정값이 millisecond와 second가 섞여 있어서 매우 주의해야 함.
 +  * JDBC Driver 6.1.2 이상 버전부터 올바로 timeout 지원 
 +    * [[https://github.com/Microsoft/mssql-jdbc/wiki/QueryTimeout|QueryTimeout · Microsoft/mssql-jdbc Wiki]] 
 +    * [[https://github.com/Microsoft/mssql-jdbc/wiki/SocketTimout|SocketTimout · Microsoft/mssql-jdbc Wiki]]
   * ''loginTimeout=second'' : connection timeout 역할 **초** 단위   * ''loginTimeout=second'' : connection timeout 역할 **초** 단위
   * ''socketTimeout=millisecond'' **밀리초** 단위   * ''socketTimeout=millisecond'' **밀리초** 단위
줄 24: 줄 27:
  
 ===== JDBC Driver 사용시 String 파라미터로인한 Full Scan 문제 ===== ===== JDBC Driver 사용시 String 파라미터로인한 Full Scan 문제 =====
 +  * [[https://docs.microsoft.com/ko-kr/sql/t-sql/data-types/data-type-precedence-transact-sql?view=sql-server-2017|데이터 타입 우선순위(Data type precedence]]에 의해 **우선순위가 낮은 타입이 높은 타입으로 형변환 발생**
 +  * 우선순위에 따라 테이블의 컬럼이 ''varchar''이고 파라미터가 ''nvarchar''일 경우에는 우선순위가 낮은 ''varchar'' 타입 컬럼 값을 ''nvarchar''로 일일이 변환해서 값을 비교하기 때문에 성능이 저하되게 됨
   * [[http://www.digitalsanctuary.com/tech-blog/java/mssql-jtds-nvarchar-and-slow-indexes.html|MSSQL, jTDS, NVARCHAR and Slow Indexes]]   * [[http://www.digitalsanctuary.com/tech-blog/java/mssql-jtds-nvarchar-and-slow-indexes.html|MSSQL, jTDS, NVARCHAR and Slow Indexes]]
   * [[http://cephas.net/blog/2005/12/02/java-jtds-preparedstatement-and-varchar/|Java, JTDS, PreparedStatement and varchar | Aaron Johnson]]   * [[http://cephas.net/blog/2005/12/02/java-jtds-preparedstatement-and-varchar/|Java, JTDS, PreparedStatement and varchar | Aaron Johnson]]
줄 36: 줄 41:
 # 혹은 setNString() 사용 # 혹은 setNString() 사용
 </code> </code>
- +  * ''sendStringParametersAsUnicode=false''로 VARCHAR 전송시에 JDBC Driver가 SQLServer 에 지정된 Collation에 따라서 ''문자열.getBytes(Collation.charset)''으로 byte 배열로 변환하여 전송한다. 완성형의 경우에는 ''CP949''로 변환. 
-혹은 JDBC 드라이버 변경없이''convert''로 처리한다.+  혹은 JDBC 드라이버 변경없이''convert''로 처리한다.
 <code sql> <code sql>
 ... ...
줄 46: 줄 51:
   * MS의 JDBC Driver는 ''java.util.logging'' 사용   * MS의 JDBC Driver는 ''java.util.logging'' 사용
   * [[java:slf4j|Slf4j]]의 jul-to-slf4j 설정 적용해야 함.   * [[java:slf4j|Slf4j]]의 jul-to-slf4j 설정 적용해야 함.
-  * 쿼리 로그 설정+  * 쿼리 로그 설정 : 클래스의 패키지 구조와 로거 구조가 일치하지 않음.
     * ''com.microsoft.sqlserver'' : ''info'' 이상     * ''com.microsoft.sqlserver'' : ''info'' 이상
-    * ''com.microsoft.sqlserver.jdbc.Connection'' : ''trace'' +    * ''com.microsoft.sqlserver.jdbc.Connection'' : ''debug'' 
-    * ''com.microsoft.sqlserver.jdbc.Statement'' : ''trace''+    * ''com.microsoft.sqlserver.jdbc.Statement'' : ''debug''
   * [[https://docs.microsoft.com/en-us/sql/connect/jdbc/tracing-driver-operation|Tracing Driver Operation]]   * [[https://docs.microsoft.com/en-us/sql/connect/jdbc/tracing-driver-operation|Tracing Driver Operation]]
   * [[https://blogs.msdn.microsoft.com/psssql/2011/10/16/easy-jdbc-logging/|Easy JDBC Logging – CSS SQL Server Engineers]]   * [[https://blogs.msdn.microsoft.com/psssql/2011/10/16/easy-jdbc-logging/|Easy JDBC Logging – CSS SQL Server Engineers]]
  
mssqlserver/jdbc.txt · 마지막으로 수정됨: 2022/03/31 17:32 저자 kwon37xi