亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4771 | 回復: 1
打印 上一主題 下一主題

Linux 下 Mysql 數(shù)據(jù)庫性能調(diào)優(yōu)技巧 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-02-23 18:34 |只看該作者 |倒序瀏覽

Linux 下 Mysql 數(shù)據(jù)庫性能調(diào)優(yōu)技巧
時間:2009-09-03 09:48來源:網(wǎng)絡收集 作者:佚名 點擊:
133 次
技術(shù)論壇

硬件準備環(huán)境: 硬盤: 16塊 SAS 15K RAID5 帶512MCache CPU: AMD 4核兩顆 內(nèi)存: 16G 軟件環(huán)境: 操作系統(tǒng): RedHat AS4.6 2.6.9-67.ELsmp Mysql: 5.0 下面分別根據(jù)不同場景進行性能調(diào)優(yōu): 使用場景A: 寫操作(插入/查詢/刪除)密集,而且數(shù)據(jù)容量遠遠超
硬件準備環(huán)境:
              硬盤: 16塊 SAS 15K RAID5 帶512MCache
              CPU:    AMD 4核兩顆
              內(nèi)存: 16G
       軟件環(huán)境:
              操作系統(tǒng): RedHat AS4.6 2.6.9-67.ELsmp
              Mysql: 5.0
       下面分別根據(jù)不同場景進行性能調(diào)優(yōu):
使用場景A:
              寫操作(插入/查詢/刪除)密集,而且數(shù)據(jù)容量遠遠超過內(nèi)存的大。ㄗ钚∈200G以上,甚至更大到1.5T以上), 每秒需要以千為單位的事務操作
              數(shù)據(jù)可靠性要求不高,允許丟幾條記錄(硬件出故障時)
       優(yōu)化方式:
              在這種情況下,數(shù)據(jù)庫的Cache基本上命中率是非常低的,對數(shù)據(jù)庫的操作基本上就是對磁盤進行操作, 因此側(cè)重點應該是對磁盤相關優(yōu)化。
              首先是考慮數(shù)據(jù)庫存儲引擎,由于涉及插入/刪除/查詢等操作,而且要支持事務,因此考慮使用InnoDB存儲引擎,不考慮MyIsam原因是該存儲引擎是表級鎖,有數(shù)據(jù)刪除時會非常慢。
              設置合適的Mysql 參數(shù),由于有16G內(nèi)存,因此參數(shù)設置如下
innodb_buffer_pool_size=8G
innodb_additional_mem_pool_size = 800M,
innodb_log_buffer_size = 4M
innodb_log_file_size = 500M
innodb_log_files_in_group = 4
log-bin
              因為使用主備復制,因此需要打開Log-Bin,這里就涉及一個sync-bin的概念,缺省情況下,sync-bin 在mysql中是關閉的,但存在一個風險,因為寫日志沒有刷新到硬盤中去的話,日志是寫在操作系統(tǒng)的文件系統(tǒng)里的Cache中,這樣若機器斷電,那么日志信息將部分丟失。為了減少數(shù)據(jù)丟失,我們測試了sync-bin=1,sync-bin=5和sync-bin=20,三種情況,sync-bin=1的情況下,丟失數(shù)據(jù)最壞概率是丟一個事務的數(shù)據(jù),但性能非常差;設置sync-bin=5的情況下,性能可以提高1倍左右;設置sync-bin=20時,性能比sync-bin=5又可以提高1倍,設置大于20的值,基本上相差不大,性能提高不了多少,最壞20個事務數(shù)據(jù)丟失是在我們的允許范圍之內(nèi),因此設置20是個合理的值,這個值具體取決于你的系統(tǒng)能夠最壞允許丟少的事務數(shù)據(jù)。
              若你的系統(tǒng)對數(shù)據(jù)丟失不于考慮,可以關閉sync-bin,這時數(shù)據(jù)刷新到硬盤完全取決于操作系統(tǒng)的配置,相關的配置參數(shù)有如下:
       /proc/sys/vm/dirty_ratio
       這 個參數(shù)控制一個進程在文件系統(tǒng)中的文件系統(tǒng)寫緩沖區(qū)的大小,單位是百分比,表示系統(tǒng)內(nèi)存的百分比,表示當一個進程中寫緩沖使用到系統(tǒng)內(nèi)存多少的時候,再有 磁盤寫操作時開始向磁盤寫出數(shù)據(jù)。增大之會使用更多系統(tǒng)內(nèi)存用于磁盤寫緩沖,也可以極大提高系統(tǒng)的寫性能。但是,當你需要持續(xù)、恒定的寫入場合時,應該降 低其數(shù)值,一般缺省是 40。更新方法
        echo 30 >/proc/sys/vm/dirty_ratio (或則修改/etc/sysctl.conf文件,增加sys.vm.dirty_ratio=30 重起機器)
       /proc/sys/vm/dirty_background_ratio
       這個參數(shù)控制文件系統(tǒng)的pdflush進程,在何時刷新磁盤。單位是百分比,表示系統(tǒng)總內(nèi)存的百分比,意思是當磁盤的臟數(shù)據(jù)緩沖到系統(tǒng)內(nèi)存多少的時候,pdflush開始把臟數(shù)據(jù)刷新到磁盤。增大會使用更多系統(tǒng)內(nèi)存用于磁盤寫緩沖,也可以極大提高系統(tǒng)的寫性能。但是,當你需要持續(xù)、恒定的寫入場合時,應該降低其數(shù)值,一般缺省是10。
      /proc/sys/vm/dirty_writeback_centisecs
       Pdflush寫后臺進程每隔多久被喚醒并執(zhí)行把臟數(shù)據(jù)寫出到硬盤。單位是 1/100 秒。缺省數(shù)值是500,也就是 5 秒。如果你的系統(tǒng)是持續(xù)地寫入動作,那么實際上還是降低這個數(shù)值比較好,這樣可以把尖峰的寫操作削平成多次寫操作。設置方法如下:
       echo 200 >/proc/sys/vm/dirty_writeback_centisecs
       /proc/sys/vm/dirty_expire_centisecs
       這個參數(shù)聲明Linux內(nèi)核寫緩沖區(qū)里面的臟數(shù)據(jù)多“舊”了之后,pdflush進程就開始考慮寫到磁盤中去。單位是 1/100秒。缺省是 30000,也就是 30 秒的數(shù)據(jù)就算舊了,將會刷新磁盤。對于特別重載的寫操作來說,這個值適當縮小也是好的,但也不能縮小太多,因為縮小太多也會導致IO提高太快。建議設置為 1500,也就是15秒算舊。
       echo 1500 >/proc/sys/vm/ dirty_expire_centisecs
因此若沒有調(diào)整這些參數(shù),全部以缺省值,而且關閉sync-bin的話,那么最多丟失的數(shù)據(jù)是:
       5秒種(dirty_writeback_centisecs)之內(nèi)的,小于1.6G的數(shù)據(jù)(dirty_background_ratio,16G/10=1.6G)
       當然,實際上5秒之內(nèi)不太可能寫1.6G的數(shù)據(jù),因此最壞就是5秒鐘之內(nèi)的數(shù)據(jù)丟失。因此若要關閉sync-bin,又不想丟失太多數(shù)據(jù)的話,可以通過調(diào)整dirty_writeback_centisecs這個參數(shù),如調(diào)整到200(2秒),這樣最多就丟2秒鐘的數(shù)據(jù)。又可以提高數(shù)據(jù)的寫能力。
       Mysql里還有一個參數(shù)可以調(diào)整,提高數(shù)據(jù)庫的寫能力,那就是
innodb_flush_log_at_trx_commit
這個參數(shù)默認是1,即每次事務Commit時,都刷新日志,以免數(shù)據(jù)丟失。因為我們的系統(tǒng)允許丟失少量數(shù)據(jù),因此可以把innodb_flush_log_at_trx_commit設置為2,允許丟失一個事務的數(shù)據(jù),經(jīng)測試,發(fā)現(xiàn)2可以提高25%左右的性能。
另外對于文件系統(tǒng)的mount方式,noatime方式也可以提高部分性能(數(shù)據(jù)庫專用的服務器,一般是noatime)
當數(shù)據(jù)有刪除更新操作后,時間長后一般有碎片,導致索引空間不緊湊,占用更多的硬盤空間,因此會導致查詢編碼,解決辦法是定期執(zhí)行下面的語句:
ALTER TABLE tbl_name ENGINE=INNODB
另外若sql語句中有sort 和group by之類,需要增大sort_buffer_size
這個參數(shù) 是每客戶端連接的,當有sort/group查詢時,會分配sort_buffer_size大小的內(nèi)存,因此若連接很多,則要小心;合適的值可以查看 SHOW GLOBAL STATUS里面Sort_merge_passes的信息以及Created_tmp_tables之類信息


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/111930/showart_2185366.html

論壇徽章:
0
2 [報告]
發(fā)表于 2010-03-09 16:47 |只看該作者
很實用的文章,支持
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP