Mysql性能優化GUID主鍵


由於系統中大量使用GUID作為主鍵,導致數據文件大,數據查詢速度慢。意向轉為Int主鍵。先查看下單表測試GUID和Int分別作為主鍵的結果。

測試條件如下:

AMD E1-1200 APU 1.4G 2GRam 100Lan, 250GB HD

Mysql 5.5,innodb_buffer_pool_size = 512M

測試表order_dish_history:60個字段,共5個索引,4個guid索引,1個timestamp+PK索引用於表分區,其它字段兩表完全相同;表分為12個分區每個月份一個分區,每個分區10萬條數據

GUID表及INT表信息

image_thumb[5]

10萬數據:

SELECT SQL_NO_CACHE SUM(dish_num),SUM(dish_money),SUM(dish_price),
AVG(dish_num),AVG(dish_money),AVG(dish_price),
MAX(dish_num),MAX(dish_money),MAX(dish_price)
FROM order_dish_history_int WHERE business_date BETWEEN '2014-01-01' AND '2014-01-02'
GROUP BY dish_id

image

50萬數據:

讀取5個分表的數據,WHERE business_date BETWEEN '2014-01-01' AND '2014-05-02'

image

100萬數據:

讀取10個分表的數據,WHERE business_date BETWEEN '2014-01-01' AND '2014-10-02'

image

可以看出Int做主鍵在數據量大的時候,查詢速度和對機子內存的要求明顯勝出。

對表結構的數據類型做更改

image

數據類型等根據數據取值范圍更改為tinyint,mediumint unsigned等。

對於分布式連鎖的,在總部采用了聯合主鍵。例如,可以取分店的唯一標識shop_id + 分店該表的主鍵

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM