mysql - Galera 集群的查询性能较差

标签 mysql galera

我最近将生产系统从单个 MySQL 实例迁移到具有三个节点的 Galera 集群。一切似乎都工作正常,但对于 SELECT 查询;迁移后查询性能急剧下降,现在已经到了难以忍受的地步。

有人有 Galera 的性能调整技巧吗?我是 Galera 的新手,我所做的设置可能是最简单的。

这是 my.cnf 文件的 Galera 部分:

# Galera
wsrep_provider        =/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address    ="gcomm:// 213.179.3.90, 213.179.3.91, 213.179.3.92"
wsrep_sst_method    =rsync
wsrep_cluster_name    =galera_cluster
binlog_format        =ROW
default_storage_engine    =InnoDB
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1

这是一个需要永远执行的查询:

SELECT
    r.customerid,
    r.operator,
    r.account,
    CAST(r.requesttype AS char),
    CAST(SUM(r.nofsms) AS char),
    COALESCE(r.subid1, ''),
    COALESCE(r.subid2, ''),
    COALESCE(r.subid3, '')
FROM
    `smspro`.`smspro_cc_result` r
INNER JOIN smspro.smspro_customer sc ON sc.customerid = r.customerid
    AND sc.smsproinvoice = 0
WHERE
    r.status = 0
        AND r.timestamp >= '2016-05-25'
        AND r.timestamp < '2016-06-25'
        AND r.requesttype IN (1 , 2, 4, 5)
GROUP BY r.customerid , r.operator , r.account , r.requesttype , r.subid1 , r.subid2 , r.subid3
ORDER BY r.customerid , r.operator , r.account , r.requesttype , r.subid1 , r.subid2 , r.subid3

以及一些统计数据

mysql> select count(*) from smspro_cc_result;
+----------+
| count(*) |
+----------+
|  9170870 |
+----------+

mysql> show index from smspro_cc_result;
+------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table            | Non_unique | Key_name      | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| smspro_cc_result |          0 | PRIMARY       |            1 | smsproid    | A         |     8825169 |     NULL | NULL   |      | BTREE      |         |               |
| smspro_cc_result |          1 | idx_sms_req_1 |            1 | customerid  | A         |       14757 |     NULL | NULL   |      | BTREE      |         |               |
| smspro_cc_result |          1 | idx_sms_req_2 |            1 | timestamp   | A         |     4412584 |     NULL | NULL   |      | BTREE      |         |               |
| smspro_cc_result |          1 | idx_sms_req_3 |            1 | customerid  | A         |       18233 |     NULL | NULL   |      | BTREE      |         |               |
| smspro_cc_result |          1 | idx_sms_req_3 |            2 | msisdn      | A         |     8825169 |     NULL | NULL   |      | BTREE      |         |               |
| smspro_cc_result |          1 | idx_sms_req_3 |            3 | timestamp   | A         |     8825169 |     NULL | NULL   |      | BTREE      |         |               |
| smspro_cc_result |          1 | idx_sms_req_5 |            1 | msisdn      | A         |     8825169 |     NULL | NULL   |      | BTREE      |         |               |
+------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

我忘记了什么或者这里都是背景 Material 吗?

最佳答案

My Tips .

如果 3 个节点在地理上分散,则 COMMIT 的延迟成本很高。

您正在与单个服务器进行比较吗?或者复制设置?或者是其他东西?客户端是否位于具有节点之一的服务器中?是否涉及负载均衡器或代理?

如果您没有重新调整多个 InnoDB 设置,Galera 将无法发挥最佳性能。让我们看看你的配置文件。 (或者同时发布 SHOW VARIABLESSHOW GLOBAL STATUS,以及 RAM 大小。)

哪些查询显示性能下降?查看它们可能有助于我们专注于问题,并有望找到解决方法。

关于mysql - Galera 集群的查询性能较差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39089293/

相关文章:

php - Vagrant 服务器没有出现?

mysql - 存储过程花费很长时间并且没有输出

设置galera集群后MySQL无法启动

mysql - 使用多个数据库结果执行 MySQL replace into select 死锁

mariadb - '无法通过套接字 '/var/run/mysqld/mysqld.sock' (111 "Connection refused") 连接到本地 MySQL 服务器'

php - 数据不是来自 Laravel 关系中的 2 个表 + 1 个数据透视表

mysql - 选择并计算 SQL 但回答错误

mysql - 关于 Galera 集群与扩展工具包配合使用的困惑

mysql - 在 percona xtradb 集群中重置 master

java - MySQL和Eclipse Java如何连接?