【问题标题】:MariaDB ODBC Connector performance issueMariaDB ODBC 连接器性能问题
【发布时间】:2021-05-04 10:28:22
【问题描述】:

我们尝试从 MySQL 5.0.96 切换到 MariaDB 10.5.9。将数据移动到 MariaDB 服务器很容易,但问题在于 MariaDB ODBC 连接器的速度。我尝试使用没有 SSL 的默认设置的 3.1.12,而我们的应用程序(主要用 Embarcadero RAD Studio 编写)表现出非常差的性能。当我尝试 MySQL ODBC 连接器 8.0.24 时,一切运行顺利。通过 MariaDB 的连接器进行的查询慢了 3-5 倍。在一般查询日志中,我发现 MariaDB 的连接器会生成大量对 information_scheme.columns 表的查询,并反复读取变量 TX_ISOLATION。 一般查询日志的简短摘录 - 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 的连接器速度吗?谢谢

【问题讨论】:

  • 你确定 Embarcadero RAD Studio 没有生成那种草率的代码吗?
  • 我不这么认为。相同的程序和数据库服务器。我只切换了连接器。

标签: mariadb odbc


【解决方案1】:

我已经为您描述的问题打开了https://jira.mariadb.org/browse/ODBC-313。最好继续在那里,因为至少需要对两个驱动程序的运行进行 ODBC 跟踪才能解决主要问题。

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多