2016-08-22 97 views
0

我最近將一個生產系統從單個MySQL實例移動到具有三個節點的Galera集羣。一切似乎工作正常,但對於SELECT查詢;查詢性能已經大幅下降,現在處於難以忍受的一面。查詢性能不佳我Galera集羣

任何人都有Galera的任何性能調整提示?我是Galera的新手,我所做的設置可能是最簡單的。

這是my.cnf文件的加萊拉部分:

# 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  |   |    | 
+------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 

難道我在這裏忘記了任何東西或是所有背景材料?

+0

「查詢」含義是「SELECT」還是所有查詢? –

+0

就我所知,SELECT是問題。系統生成數據似乎沒有問題;這是報道,已經受到重創,成績顯着。 – koenig

+0

你是CPU綁定還是磁盤綁定?這些機器與前一臺服務器相媲美嗎?特別是關於磁盤性能和內存,還有內核的類型和數量? 'innodb_buffer_pool_size'可比嗎? –

回答

1

My Tips

如果3個節點地理位置分散,則延遲在COMMIT上花費很大。

您正在比較單個服務器嗎?或複製設置?或者是其他東西?客戶端是否在服務器中有一個節點?是否涉及負載平衡器或代理?

如果您還沒有重新調整好幾個InnoDB設置,Galera將無法達到最佳性能。讓我們看看你的配置文件。 (或者同時發佈SHOW VARIABLESSHOW GLOBAL STATUS,加上RAM大小。)

什麼查詢顯示降級?看着它們可能會幫助我們將重點放在這個問題上,並希望能夠解決這個問題。

+0

感謝您幫助同行 – Drew

+0

我正在比較單個服務器 - 我將其替換爲冗餘集羣。所有服務器都在同一地點(全部虛擬,應該添加)。 – koenig

+0

「全部虛擬」...意思......它們都運行在相同的共享物理硬件上,並且可以讀寫不同的目錄,但是在同一個磁盤上?或者三個獨立的服務器恰好是虛擬機? –