最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

21條MySQL優(yōu)化建議(經(jīng)驗(yàn)總結(jié))

 更新時間:2014年07月22日 11:45:58   作者:吳炳錫  
這篇文章主要介紹了21條MySQL優(yōu)化建議,均來自個人的實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié),需要的朋友可以參考下

今天一個朋友向我咨詢怎么去優(yōu)化 MySQL,我按著思維整理了一下,大概粗的可以分為21個方向。 還有一些細(xì)節(jié)東西(table cache, 表設(shè)計,索引設(shè)計,程序端緩存之類的)先不列了,對一個系統(tǒng),初期能把下面做完也是一個不錯的系統(tǒng)。

1. 要確保有足夠的內(nèi)存

數(shù)據(jù)庫能夠高效的運(yùn)行,最關(guān)建的因素需要內(nèi)存足更大了,能緩存住數(shù)據(jù),更新也可以在內(nèi)存先完成。但不同的業(yè)務(wù)對內(nèi)存需要強(qiáng)度不一樣,一推薦內(nèi)存要占到數(shù)據(jù)的15-25%的比例,特別的熱的數(shù)據(jù),內(nèi)存基本要達(dá)到數(shù)據(jù)庫的80%大小。

2. 需要更多更快的CPU

MySQL 5.6可以利用到64個核,而MySQL每個query只能運(yùn)行在一個CPU上,所以要求更多的CPU,更快的CPU會更有利于并發(fā)。

3. 要選擇合適的操作系統(tǒng)

在官方建議估計最推薦的是Solaris, 從實(shí)際生產(chǎn)中看CentOS, REHL都是不錯的選擇,推薦使用CentOS, REHL 版本為6以后的,當(dāng)然Oracle Linux也是一個不錯的選擇。雖然從MySQL 5.5后對Windows做了優(yōu)化,但也不推薦在高并發(fā)環(huán)境中使用windows.

4. 合理的優(yōu)化系統(tǒng)的參數(shù)

更改文件句柄  ulimit –n 默認(rèn)1024 太小
進(jìn)程數(shù)限制  ulimit –u   不同版本不一樣
禁掉NUMA  numctl –interleave=all

5. 選擇合適的內(nèi)存分配算法

默認(rèn)的內(nèi)存分配就是c的malloc 現(xiàn)在也出現(xiàn)許多優(yōu)化的內(nèi)存分配算法:

jemalloc and tcmalloc

從MySQL 5.5后支持聲明內(nèi)存儲方法。

復(fù)制代碼 代碼如下:

[mysqld_safe]
malloc-lib = tcmalloc

 

或是直接指到so文件

復(fù)制代碼 代碼如下:

[mysqld_safe]

malloc-lib=/usr/local/lib/libtcmalloc_minimal.so

6. 使用更快的存儲設(shè)備ssd或是固態(tài)卡

存儲介質(zhì)十分影響MySQL的隨機(jī)讀取,寫入更新速度。新一代存儲設(shè)備固態(tài)ssd及固態(tài)卡的出現(xiàn)也讓MySQL 大放異彩,也是淘寶在去IOE中干出了一個漂亮仗。

7. 選擇良好的文件系統(tǒng)

推薦XFS, Ext4,如果還在使用ext2,ext3的同學(xué)請盡快升級別?!⊥扑]XFS,這個也是今后一段時間Linux會支持一個文件系統(tǒng)。

文件系統(tǒng)強(qiáng)烈推薦: XFS

8. 優(yōu)化掛載文件系統(tǒng)的參數(shù)

掛載XFS參數(shù):

復(fù)制代碼 代碼如下:
(rw, noatime,nodiratime,nobarrier)

掛載ext4參數(shù):

復(fù)制代碼 代碼如下:
ext4 (rw,noatime,nodiratime,nobarrier,data=ordered)

如果使用SSD或是固態(tài)盤需要考慮:

• innodb_page_size = 4K
• Innodb_flush_neighbors = 0

9. 選擇適合的IO調(diào)度

正常請下請使用deadline 默認(rèn)是noop

復(fù)制代碼 代碼如下:
echo dealine >/sys/block/{DEV-NAME}/queue/scheduler

10. 選擇合適的Raid卡Cache策略

請使用帶電的Raid,啟用WriteBack, 對于加速redo log ,binary log, data file都有好處。

11. 禁用Query Cache

Query Cache在Innodb中有點(diǎn)雞肋,Innodb的數(shù)據(jù)本身可以在Innodb buffer pool中緩存,Query Cache屬于結(jié)果集緩存,如果開啟Query Cache更新寫入都要去檢查query cache反而增加了寫入的開銷。

在MySQL 5.6中Query cache是被禁掉了。

12. 使用Thread Pool

現(xiàn)在一個數(shù)據(jù)對應(yīng)5個以上App場景比較,但MySQL有個特性隨著連接增多的情況下性能反而下降,所以對于連接超過200的以后場景請考慮使用thread pool. 這是一個偉大的發(fā)明。

13. 合理調(diào)整內(nèi)存

13.1 減少連接的內(nèi)存分配
連接可以用thread_cache_size緩存,觀查屬于比較屬不如thread pool給力。數(shù)據(jù)庫在連上分配的內(nèi)存如下:

復(fù)制代碼 代碼如下:

max_used_connections * (
read_buffer_size +

read_rnd_buffer_size +

join_buffer_size +

sort_buffer_size +

binlog_cache_size +

thread_stack +

2 * net_buffer_length …

)


13.2 使較大的buffer pool

要把60-80%的內(nèi)存分給innodb_buffer_pool_size.  這個不要超過數(shù)據(jù)大小了,另外也不要分配超過80%不然會利用到swap.
 
14. 合理選擇LOG刷新機(jī)制
Redo Logs:

復(fù)制代碼 代碼如下:

– innodb_flush_log_at_trx_commit  = 1 // 最安全

– innodb_flush_log_at_trx_commit  = 2 //  較好性能

– innodb_flush_log_at_trx_commit  = 0 //  最好的情能

binlog :

binlog_sync = 1  需要group commit支持,如果沒這個功能可以考慮binlog_sync=0來獲得較佳性能。

數(shù)據(jù)文件:

復(fù)制代碼 代碼如下:
innodb_flush_method = O_DIRECT

15. 請使用Innodb表

可以利用更多資源,在線alter操作有所提高。 目前也支持非中文的full text, 同時支持Memcache API訪問。目前也是MySQL最優(yōu)秀的一個引擎。

如果你還在MyISAM請考慮快速轉(zhuǎn)換。

16. 設(shè)置較大的Redo log

以前Percona 5.5和官方MySQL 5.5比拼性能時,勝出的一個Tips就是分配了超過4G的Redo log ,而官方MySQL5.5 redo log不能超過4G. 從 MySQL 5.6后可以超過4G了,通常建Redo log加起來要超過500M。 可以通過觀查redo log產(chǎn)生量,分配Redo log大于一小時的量即可。

17. 優(yōu)化磁盤的IO

innodb_io_capactiy 在sas 15000轉(zhuǎn)的下配置800就可以了,在ssd下面配置2000以上。

在MySQL 5.6:

復(fù)制代碼 代碼如下:

innodb_lru_scan_depth =  innodb_io_capacity / innodb_buffer_pool_instances

innodb_io_capacity_max  =  min(2000, 2 * innodb_io_capacity)


 

18. 使用獨(dú)立表空間

目前來看新的特性都是獨(dú)立表空間支持:
truncate table 表空間回收
表空間傳輸
較好的去優(yōu)化碎片等管理性能的增加,
整體上來看使用獨(dú)立表空間是沒用的。

19. 配置合理的并發(fā)

innodb_thread_concurrency =并發(fā)這個參數(shù)在Innodb中變化也是最頻繁的一個參數(shù)。不同的版本,有可能不同的小版本也有變動。一般推薦:

在使用thread pool 的情況下:
innodb_thread_concurrency = 0 就可以了。
如果在沒有thread pool的情況下:
5.5 推薦:innodb_thread_concurrency =16 – 32
5.6 推薦innodb_thread_concurrency = 36

20. 優(yōu)化事務(wù)隔離級別

默認(rèn)是 Repeatable read
推薦使用Read committed  binlog格式使用mixed或是Row
較低的隔離級別 = 較好的性能

21. 注重監(jiān)控

任環(huán)境離不開監(jiān)控,如果少了監(jiān)控,有可能就會陷入盲人摸象。 推薦zabbix+mpm構(gòu)建監(jiān)控。

相關(guān)文章

  • MySQL定時備份方案(利用Linux crontab)

    MySQL定時備份方案(利用Linux crontab)

    這篇文章主要給大家介紹了關(guān)于MySQL定時備份方案的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解MySQL 聯(lián)合查詢優(yōu)化機(jī)制

    詳解MySQL 聯(lián)合查詢優(yōu)化機(jī)制

    MySQL 使用聯(lián)合的形式的地方會遠(yuǎn)遠(yuǎn)超過我們過去認(rèn)知的范疇?;旧希鼤J(rèn)為每個查詢都有聯(lián)合,而不僅僅是從兩張表中查出匹配的數(shù)據(jù)行,這包括了子查詢,甚至僅僅對單表的 SELECT 操作。因此,理解 MySQL 如何執(zhí)行聯(lián)合十分重要。
    2021-05-05
  • MySQL主從復(fù)制的原理圖解及Java語言示例使用

    MySQL主從復(fù)制的原理圖解及Java語言示例使用

    這篇文章主要介紹了MySQL的主從復(fù)制原理詳細(xì)分析,讀寫分離是基于主從復(fù)制來實(shí)現(xiàn)的。文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 阿里云Centos 7.5安裝Mysql的教程

    阿里云Centos 7.5安裝Mysql的教程

    這篇文章主要介紹了阿里云Centos 7.5安裝Mysql的教程,需要的朋友可以參考下
    2017-07-07
  • 詳解MySQL的字段默認(rèn)null對唯一索引的影響

    詳解MySQL的字段默認(rèn)null對唯一索引的影響

    這篇文章主要為大家介紹了MySQL的字段默認(rèn)null對唯一索引的影響詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Windows下mysql5.7.18安裝配置教程

    Windows下mysql5.7.18安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了Windows下mysql5.7.18安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • mysql?DISTINCT選取多個字段,獲取distinct后的行信息方式

    mysql?DISTINCT選取多個字段,獲取distinct后的行信息方式

    這篇文章主要介紹了mysql?DISTINCT選取多個字段,獲取distinct后的行信息方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法

    MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法

    這篇文章主要給大家介紹了關(guān)于MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Linux 安裝JDK Tomcat MySQL的教程(使用Mac遠(yuǎn)程訪問)

    Linux 安裝JDK Tomcat MySQL的教程(使用Mac遠(yuǎn)程訪問)

    這篇文章主要介紹了Linux 安裝JDK Tomcat MySQL(使用Mac遠(yuǎn)程訪問),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • MySQL?時間類型用?datetime,?timestamp?還是?integer?更好

    MySQL?時間類型用?datetime,?timestamp?還是?integer?更好

    這篇文章主要介紹了MySQL?時間類型用datetime,timestamp還是integer更好,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09

最新評論

柘荣县| 丁青县| 遂平县| 红河县| 平武县| 饶平县| 宜良县| 祁连县| 伽师县| 汽车| 沙湾县| 新闻| 神木县| 靖远县| 江北区| 自贡市| 河池市| 阳信县| 寿光市| 沙河市| 桂阳县| 汾阳市| 鲁甸县| 洪洞县| 无棣县| 景谷| 建湖县| 都江堰市| 长武县| 武冈市| 铜川市| 永宁县| 阿城市| 平邑县| 德江县| 丹东市| 宜黄县| 岳阳县| 通江县| 永德县| 洛扎县|