成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實例詳解Linux下MySQL數據庫性能調優方法

數據庫 MySQL 數據庫運維
本文將以一個實際案例,為大家講解Linux下MySQL數據庫性能調優方法,主要平臺是RedHat操作系統。

以下的環境具備一定的代表性,可以說是中小企業一般配置和工作環境。希望通過本文能讓大家理解Linux下MySQL數據庫性能調優方法。51CTO向您推薦《MySQL數據庫入門與精通教程》。

硬件準備環境:

硬盤: 16塊 SAS 15K RAID5 帶512MCache

CPU: AMD 4核兩顆

內存: 16G

 軟件環境:

操作系統: RedHat AS4.6 2.6.9-67.ELsmp MySQL: 5.0

下面分別根據不同場景進行性能調優:

使用場景A: 寫操作(插入/查詢/刪除)密集,而且數據容量遠遠超硬件準備環境:

硬盤: 16塊 SAS 15K RAID5 帶512MCache

CPU:    AMD 4核兩顆

內存: 16G

軟件環境

操作系統: RedHat AS4.6 2.6.9-67.ELsmp

MySQL: 5.0

下面分別根據不同場景進行性能調優:

使用場景A:

寫操作(插入/查詢/刪除)密集,而且數據容量遠遠超過內存的大小(最小是200G以上,甚至更大到1.5T以上), 每秒需要以千為單位的事務操作

數據可靠性要求不高,允許丟幾條記錄(硬件出故障時)

優化方式:

在這種情況下,數據庫的Cache基本上命中率是非常低的,對數據庫的操作基本上就是對磁盤進行操作, 因此側重點應該是對磁盤相關優化。

首先是考慮數據庫存儲引擎,由于涉及插入/刪除/查詢等操作,而且要支持事務,因此考慮使用InnoDB存儲引擎,不考慮MyIsam原因是該存儲引擎是表級鎖,有數據刪除時會非常慢。

設置合適的MySQL 參數,由于有16G內存,因此參數設置如下

 

  1. innodb_buffer_pool_size=8G  
  2. innodb_additional_mem_pool_size = 800M,  
  3. innodb_log_buffer_size = 4M  
  4. innodb_log_file_size = 500M  
  5. innodb_log_files_in_group = 4  
  6. log-bin 

 

因為使用主備復制,因此需要打開Log-Bin,這里就涉及一個sync-bin的概念,缺省情況下,sync-bin 在MySQL中是關閉的,但存在一個風險,因為寫日志沒有刷新到硬盤中去的話,日志是寫在操作系統的文件系統里的Cache中,這樣若機器斷電,那么日志信息將部分丟失。為了減少數據丟失,我們測試了sync-bin=1,sync-bin=5和sync-bin=20,三種情況,sync-bin=1的情況下,丟失數據最壞概率是丟一個事務的數據,但性能非常差;設置sync-bin=5的情況下,性能可以提高1倍左右;設置sync-bin=20時,性能比sync-bin=5又可以提高1倍,設置大于20的值,基本上相差不大,性能提高不了多少,最壞20個事務數據丟失是在我們的允許范圍之內,因此設置20是個合理的值,這個值具體取決于你的系統能夠最壞允許丟少的事務數據。

若你的系統對數據丟失不于考慮,可以關閉sync-bin,這時數據刷新到硬盤完全取決于操作系統的配置,相關的配置參數有如下:

 

  1. /proc/sys/vm/dirty_ratio 

這 個參數控制一個進程在文件系統中的文件系統寫緩沖區的大小,單位是百分比,表示系統內存的百分比,表示當一個進程中寫緩沖使用到系統內存多少的時候,再有 磁盤寫操作時開始向磁盤寫出數據。增大之會使用更多系統內存用于磁盤寫緩沖,也可以極大提高系統的寫性能。但是,當你需要持續、恒定的寫入場合時,應該降 低其數值,一般缺省是 40。更新方法

 echo 30 >/proc/sys/vm/dirty_ratio (或則修改/etc/sysctl.conf文件,增加sys.vm.dirty_ratio=30 重起機器)

 

  1. /proc/sys/vm/dirty_background_ratio 

這個參數控制文件系統的pdflush進程,在何時刷新磁盤。單位是百分比,表示系統總內存的百分比,意思是當磁盤的臟數據緩沖到系統內存多少的時候,pdflush開始把臟數據刷新到磁盤。增大會使用更多系統內存用于磁盤寫緩沖,也可以極大提高系統的寫性能。但是,當你需要持續、恒定的寫入場合時,應該降低其數值,一般缺省是10。

 

  1. /proc/sys/vm/dirty_writeback_centisecs 

Pdflush寫后臺進程每隔多久被喚醒并執行把臟數據寫出到硬盤。單位是 1/100 秒。缺省數值是500,也就是 5 秒。如果你的系統是持續地寫入動作,那么實際上還是降低這個數值比較好,這樣可以把尖峰的寫操作削平成多次寫操作。設置方法如下:

 

  1. echo 200 >/proc/sys/vm/dirty_writeback_centisecs  
  2. /proc/sys/vm/dirty_expire_centisecs 

 

這個參數聲明Linux內核寫緩沖區里面的臟數據多“舊”了之后,pdflush進程就開始考慮寫到磁盤中去。單位是 1/100秒。缺省是 30000,也就是 30 秒的數據就算舊了,將會刷新磁盤。對于特別重載的寫操作來說,這個值適當縮小也是好的,但也不能縮小太多,因為縮小太多也會導致IO提高太快。建議設置為 1500,也就是15秒算舊。

 

  1. echo 1500 >/proc/sys/vm/ dirty_expire_centisecs 

因此若沒有調整這些參數,全部以缺省值,而且關閉sync-bin的話,那么最多丟失的數據是:

5秒種(dirty_writeback_centisecs)之內的,小于1.6G的數據(dirty_background_ratio,16G/10=1.6G)

當然,實際上5秒之內不太可能寫1.6G的數據,因此最壞就是5秒鐘之內的數據丟失。因此若要關閉sync-bin,又不想丟失太多數據的話,可以通過調整dirty_writeback_centisecs這個參數,如調整到200(2秒),這樣最多就丟2秒鐘的數據。又可以提高數據的寫能力。

MySQL里還有一個參數可以調整,提高數據庫的寫能力,那就是

 

  1. innodb_flush_log_at_trx_commit 

這個參數默認是1,即每次事務Commit時,都刷新日志,以免數據丟失。因為我們的系統允許丟失少量數據,因此可以把innodb_flush_log_at_trx_commit設置為2,允許丟失一個事務的數據,經測試,發現2可以提高25%左右的性能。

另外對于文件系統的mount方式,noatime方式也可以提高部分性能(數據庫專用的服務器,一般是noatime)

當數據有刪除更新操作后,時間長后一般有碎片,導致索引空間不緊湊,占用更多的硬盤空間,因此會導致查詢編碼,解決辦法是定期執行下面的語句:

 

  1. ALTER TABLE tbl_name ENGINE=INNODB 

另外若sql語句中有sort 和group by之類,需要增大sort_buffer_size

這個參數 是每客戶端連接的,當有sort/group查詢時,會分配sort_buffer_size大小的內存,因此若連接很多,則要小心;合適的值可以查看 SHOW GLOBAL STATUS里面Sort_merge_passes的信息以及Created_tmp_tables之類信息。

【編輯推薦】

  1. MySQL創始人打造MariaDB 全面兼容MySQL 5.1
  2. 從MySQL 5.5發布看開源數據庫版本升級新模式
  3. MySQL 5.5發布 支持半同步復制
  4. 詳解MySQL中EXPLAIN解釋命令
  5. MySQL數據庫中的外鍵約束詳解
責任編輯:彭凡 來源: ChinaUnix
相關推薦

2011-07-08 16:02:54

HBase

2022-05-10 10:02:51

openGauss性能調優數據庫

2019-08-13 08:32:14

MySQL數據庫性能調優

2011-04-25 09:12:47

LinuxIO數據庫

2023-04-03 10:25:00

數據庫性能調優

2009-04-01 11:17:52

內存分配調優Oracle

2011-05-24 09:45:41

Oracle數據庫系統調優

2010-05-04 17:08:24

Oracle數據庫

2019-07-08 14:05:53

數據庫JVMSQL

2010-04-07 13:32:39

Oracle調優

2023-10-04 11:16:03

數據庫MySQL

2011-03-10 14:40:54

LAMPMysql

2011-04-18 13:46:24

數據庫設計

2017-07-04 13:02:02

Linux系統性能調優工具

2010-10-15 13:45:20

安裝MySql數據庫

2013-03-18 15:35:30

2022-03-24 10:57:18

數據庫MySQLSQL

2009-03-30 14:19:26

優化數據庫MySQL

2011-08-15 18:09:46

查詢性能調優索引優化

2018-01-15 15:35:15

數據庫性能調優案例
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕亚洲精品 | 日本一区二区高清不卡 | 亚洲精品视频在线播放 | 一级做a爰片性色毛片视频停止 | 日本免费黄色一级片 | 国产一区二区三区久久 | 一本一道久久a久久精品综合蜜臀 | 国产精品美女久久久久久久久久久 | 日韩中文字幕视频 | 欧美1区| 国产人久久人人人人爽 | 福利社午夜影院 | 亚洲一区二区三区视频 | 日韩快播电影网 | 精品久久久久一区二区国产 | 亚洲成人一级 | 久久久久国产精品 | 亚洲国产成人精品女人久久久 | 91婷婷韩国欧美一区二区 | 欧美日韩在线播放 | 青青草一区二区 | 亚洲欧美在线观看视频 | 国产精品美女久久久久aⅴ国产馆 | 国产免费一区二区 | 久久天天躁狠狠躁夜夜躁2014 | 亚洲精品天堂 | 99re在线播放 | 亚洲精品久久久一区二区三区 | 中文字幕在线免费 | 国产精品一区二区三级 | 婷婷丁香激情 | 激情一区 | 日韩精品一区二区不卡 | 亚洲午夜视频在线观看 | 午夜视频一区 | 日日操网站 | 天天视频一区二区三区 | 在线观看日本网站 | 国产日韩一区二区 | 成人免费在线网 | 国产黄色电影 |