반응형
MariaDB ODBC 커넥터 성능 문제
MySQL 5.0.96에서 MariaDB 10.5.9로 전환하려고 합니다.MariaDB 서버로 데이터를 이동하는 것은 쉬웠지만 MariaDB ODBC 커넥터의 속도에 문제가 있습니다.SSL을 사용하지 않고 기본 설정으로 3.1.12를 시도했는데, 애플리케이션(대부분 Embacadero RAD Studio에서 작성)이 매우 저조한 성능을 보였습니다.MySQL ODBC 커넥터 8.0.24를 사용해보니 모든 것이 원활하게 실행되었습니다.MariaDB 커넥터를 통한 쿼리 속도는 3~5배 느렸습니다.일반적인 쿼리 로그에서 MariaDB의 커넥터는 information_scheme.columns 테이블에 많은 쿼리를 생성하고 반복적으로 변수 TX_를 읽는 것을 발견했습니다.격리일반 쿼리 로그에서 짧은 추출 - MariaDB 커넥터:
3 Query SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='TX_ISOLATION'
3 Prepare select * from stanice
3 Execute select * from stanice
3 Prepare SELECT TABLE_SCHEMA AS TABLE_CAT, NULL AS TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION KEY_SEQ, 'PRIMARY' PK_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_KEY = 'pri' AND TABLE_SCHEMA LIKE 'unicentrum' AND TABLE_NAME LIKE 'stanice' ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
3 Execute SELECT TABLE_SCHEMA AS TABLE_CAT, NULL AS TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION KEY_SEQ, 'PRIMARY' PK_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_KEY = 'pri' AND TABLE_SCHEMA LIKE 'unicentrum' AND TABLE_NAME LIKE 'stanice' ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
3 Close stmt
3 Reset stmt
3 Query SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='TX_ISOLATION'
3 Prepare SELECT * FROM stanice WHERE Sit_ID = ? ORDER BY Sit_ID, Podsit_ID, ID
3 Execute SELECT * FROM stanice WHERE Sit_ID = 1 ORDER BY Sit_ID, Podsit_ID, ID
3 Prepare SELECT TABLE_SCHEMA AS TABLE_CAT, NULL AS TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION KEY_SEQ, 'PRIMARY' PK_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_KEY = 'pri' AND TABLE_SCHEMA LIKE 'unicentrum' AND TABLE_NAME LIKE 'stanice' ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
3 Execute SELECT TABLE_SCHEMA AS TABLE_CAT, NULL AS TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION KEY_SEQ, 'PRIMARY' PK_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_KEY = 'pri' AND TABLE_SCHEMA LIKE 'unicentrum' AND TABLE_NAME LIKE 'stanice' ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
3 Close stmt
3 Reset stmt
MySQL 커넥터:
3 Query SELECT @@tx_isolation
...
3 Query select * from stanice
3 Prepare SELECT * FROM stanice WHERE Sit_ID = ? ORDER BY Sit_ID, Podsit_ID, ID
3 Execute SELECT * FROM stanice WHERE Sit_ID = '1' ORDER BY Sit_ID, Podsit_ID, ID
3 Close stmt
이러한 "불필요한" 쿼리가 이러한 커넥터의 성능을 변화시키고 있다고 생각합니다.MariaDB 커넥터의 속도를 높이려면 어떻게 해야 할까요?감사해요.
당신이 설명한 문제에 대해 https://jira.mariadb.org/browse/ODBC-313를 개설했습니다.주요 문제를 해결하려면 적어도 두 드라이버를 사용한 실행의 ODBC 트레이스가 필요하므로 계속하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/67383007/mariadb-odbc-connector-performance-issue
반응형
'sourcecode' 카테고리의 다른 글
Jackson은 캐스팅 없이 JsonNode를 ArrayNode로 전환하는 방법을 알고 계십니까? (0) | 2022.11.27 |
---|---|
C#, C++ 또는 Java 컴파일러를 구동하여 1+2+3+를 계산하는 방법...컴파일 시 +1000? (0) | 2022.11.27 |
MariaDB가 이 덤프 파일을 가져올 수 없습니다. (0) | 2022.11.27 |
PHP로 cURL이 뭐죠? (0) | 2022.11.27 |
수집이 비어 있는지 Larabel 확인 (0) | 2022.11.26 |