2013-10-08 38 views
1

我需要改善數據庫的I/O性能。考慮升級到「4xlarge」硬件(http://aws.amazon.com/ec2/instance-types/),我正在使用下面描述的「2xlarge」硬件&。謝謝您的幫助!提高MySQL I/O性能(硬件和分區)

詳情:

CPU使用率是罰款(通常低於30%),正常運行平均負荷從0.5隨時隨地2.0(但我相信我應該除以CPU的數量),以便看起來也不錯。但是,I/O很糟糕:iostat顯示良好的服務時間,但排隊時間(我想這意味着等待訪問磁盤)時間太長。我已經將MySQL配置爲每1秒刷新一次磁盤,而不是每次寫入,這有所幫助,但還不夠。分析顯示有幾個表是大多數負載的罪魁禍首(都讀取了& &寫入操作)。查詢已編入索引&已優化,但未分區。 MySQL的平均狀態爲:發送數據@ 45%,統計@ 20%,更新@ 15%,排序結果@ 8%。

問題:

  1. 我能獲得多少性能獲得通過升級硬件?
  2. 同樣的問題,但如果我劃分高負載表?

機器:

  • m2.2xlarge

    • 64位
    • 4個vCPU
    • 13 ECU
    • 34.2千兆紀念品
    • EBS-優化
    • 網絡性能: 「適度」
  • m2.4xlarge

    • 64位
    • 6的vCPU
    • 26 ECU
    • 68.4千兆紀念品
    • EBS優化
    • 網絡性能: 「高」

回答

1

根據我的經驗,在MySQL的性能最大的提升來自於IO。你有很多的RAM。嘗試設置RAM驅動器並將tmpdir指向它。

我有幾個MySQL服務器非常繁忙。我的設置如下 - 也許這可以幫助你調整你的設置。

我的設置是: - 雙2.66 CPU 8核心盒帶6驅動器Raid-1E陣列 - 1.3TB。 -innodblogs在單獨的SSD驅動器上。 -tmpdir位於2GB tempfs分區上。 -32GB RAM的

InnoDB的設置:

innodb_thread_concurrency=16 
innodb_buffer_pool_size = 22G 
innodb_additional_mem_pool_size = 20M 
innodb_log_file_size = 400M 
innodb_log_files_in_group=8 
innodb_log_buffer_size = 8M 
innodb_flush_log_at_trx_commit = 2 (This is a slave machine - 1 is not required fo my purposes) 
innodb_flush_method=O_DIRECT 

每秒平均電流查詢:5185.650

我使用的Percona Server,它是相當多的,其他MySQLs從我的測試速度更快。

+0

太棒了,謝謝。我安裝了2GB Ram磁盤並將其重定向到臨時表存儲。重新啓動mysql後,它看起來像我沒有使用2GB:雖然你碰巧知道任何其他配置變量我需要改變?同時,請告訴我你有什麼這個?謝謝! SHOW GLOBAL VARIABLES LIKE'%table_size'; - 爲max_heap_table_size和tmp_table_size顯示16MB – gfunk