sourcecode

MariaDB ODBC 커넥터 성능 문제

copyscript 2022. 11. 27. 21:22
반응형

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

반응형