简体   繁体   English

MariaDB ODBC 连接器性能问题

[英]MariaDB ODBC Connector performance issue

We try to switch from MySQL 5.0.96 to MariaDB 10.5.9.我们尝试从 MySQL 5.0.96 切换到 MariaDB 10.5.9。 Move data to MariaDB server was easy but problem is with speed of MariaDB ODBC connector.将数据移动到 MariaDB 服务器很容易,但问题在于 MariaDB ODBC 连接器的速度。 I tried 3.1.12 with default settings without SSL and our applications (mostly written in Embarcadero RAD Studio) showed very poor performance.我在没有 SSL 的默认设置下尝试了 3.1.12,我们的应用程序(主要用 Embarcadero RAD Studio 编写)表现出非常差的性能。 When I tried MySQL ODBC connector 8.0.24 everything ran smoothly.当我尝试 MySQL ODBC 连接器 8.0.24 时,一切运行顺利。 Queries through MariaDB's connector was 3-5 times slower.通过 MariaDB 的连接器进行的查询慢了 3-5 倍。 In general query log I found that MariaDB's connector generates a lot of queries to information_scheme.columns table and repeatedly it reads variable TX_ISOLATION.在一般查询日志中,我发现 MariaDB 的连接器会生成大量对 information_scheme.columns 表的查询,并反复读取变量 TX_ISOLATION。 Short extract from general query log - MariaDB connector:一般查询日志的简短摘录 - 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 connector: 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

I think those "unnecessary" queries are making difference in performance of those connectors.我认为那些“不必要的”查询正在影响这些连接器的性能。 Any ideas what could I do to speed up MariaDB's connector?有什么想法可以加快 MariaDB 的连接器速度吗? Thanks谢谢

I've opened https://jira.mariadb.org/browse/ODBC-313 for the problem you've described.我已经为您描述的问题打开了 https://jira.mariadb.org/browse/ODBC-313 It would be better to continue there, as at least ODBC trace of the run with both drivers is required to address main issue.最好继续在那里,因为至少需要对两个驱动程序的运行跟踪 ODBC 来解决主要问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM