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

互聯網金融MySQL優化參數標準

數據庫 MySQL
日常的MySQL運維中說起調優,MySQL的配置文件my.cnf是不可忽略的。MySQL的默認參數并不能滿足我們日常線上業務的需求,因此對參數進行優化也是不可缺少的環節。

[[193003]]

前言

日常的MySQL運維中說起調優,MySQL的配置文件my.cnf是不可忽略的。MySQL的默認參數并不能滿足我們日常線上業務的需求,因此對參數進行優化也是不可缺少的環節。這里不想列出my.cnf配置中有多少項和每一項的意思,這些都可以在官方文檔上查到。以下僅對日常工作用應該注意的一些參數進行說明。

下面針對一些參數進行說明。當然還有其它的設置可以起作用,取決于你的負載或硬件:在慢內存和快磁盤、高并發和寫密集型負載情況下,你將需要特殊的調整。然而這里的目標是讓你可以快速地獲得一個穩健的MySQL配置,而不用花費太多時間在調整一些無關緊要的MySQL設置或讀文檔,找出哪些設置對你來說是重要的。

InnoDB配置

從MySQL 5.5版本開始,InnoDB就是默認的存儲引擎并且它比任何其它存儲引擎的使用要多得多。那也是為什么它需要小心配置的原因。

1 innodb_file_per_table

表的數據和索引存放在共享表空間里或者單獨表空間里。我們的工作場景安裝是默認設置了innodb_file_per_table = ON,這樣也有助于工作中進行單獨表空間的遷移工作。MySQL 5.6中,這個屬性默認值是ON。

2 innodb_flush_log_at_trx_commit

默認值為1,表示InnoDB完全支持ACID特性。當你的主要關注點是數據安全的時候這個值是最合適的,比如在一個主節點上。但是對于磁盤(讀寫)速度較慢的系統,它會帶來很巨大的開銷,因為每次將改變flush到redo日志都需要額外的fsyncs。

如果將它的值設置為2會導致不太可靠(unreliable)。因為提交的事務僅僅每秒才flush一次到redo日志,但對于一些場景是可以接受的,比如對于主節點的備份節點這個值是可以接受的。如果值為0速度就更快了,但在系統崩潰時可能丟失一些數據:只適用于備份節點。說到這個參數就一定會想到另一個sync_binlog。

3 innodb_flush_method

這項配置決定了數據和日志寫入硬盤的方式。一共有三種方式,我們默認使用O_DIRECT 。O_DIRECT模式:數據文件的寫入操作是直接從mysql innodb buffer到磁盤的,并不用通過操作系統的緩沖,而真正的完成也是在flush這步,日志還是要經過OS緩沖。

4 innodb_log_buffer_size

這項配置決定了為尚未執行的事務分配的緩存。其默認值(1MB)一般來說已經夠用了,但是如果你的事務中包含有二進制大對象或者大文本字段的話,這點緩存很快就會被填滿并觸發額外的I/O操作。看看Innodb_log_waits狀態變量,如果它不是0,增加innodb_log_buffer_size。

5 innodb_buffer_pool_size

這個參數應該是運維中必須關注的了。緩沖池是數據和索引緩存的地方,它屬于MySQL的核心參數,默認為128MB,正常的情況下這個參數設置為物理內存的60%~70%。(不過我們的實例基本上都是多實例混部的,所以這個值還要根據業務規模來具體分析。)

6 innodb_log_file_size

這是redo日志的大小。redo日志被用于確保寫操作快速而可靠并且在崩潰時恢復。如果你知道你的應用程序需要頻繁地寫入數據并且你使用的是MySQL 5.6,那么你可以一開始就把它這是成4G。(具體大小還要根據自身業務進行適當調整)

7 innodb_support_xa

innodb_support_xa可以開關InnoDB的XA兩段式事務提交。默認情況下,innodb_support_xa=true,支持XA兩段式事務提交。由于XA兩段式事務提交導致多余flush等操作,性能影響會達到10%,所有為了提高性能,有些DBA會設置innodb_support_xa=false。這樣的話,redolog和binlog將無法同步,可能存在事務在主庫提交,但是沒有記錄到binlog的情況。這樣也有可能造成事務數據的丟失。

8 innodb_additional_mem_pool_size

該參數用來存儲數據字段信息和其他內部數據結構。表越多,需要在這里分配的內存越多。如果InnoDB用光了這個池內的內存,InnoDB開始從操作系統分配內存,并且往MySQL錯誤日志寫警告信息,默認8MB。一般設置16MB。

9 max_connections

MySQL服務器默認連接數比較小,一般也就100來個***把***值設大一些。一般設置500~1000即可每一個鏈接都會占用一定的內存,所以這個參數也不是越大越好。有的人遇到too many connections會去增加這個參數的大小,但其實如果是業務量或者程序邏輯有問題或者sql寫的不好,即使增大這個參數也無濟于事,再次報錯只是時間問題。在應用程序里使用連接池或者在MySQL里使用進程池有助于解決這一問題。

  • Seesion級的內存分配
  1. max_threads(當前活躍連接數)* ( 
  2.  
  3. read_buffer_size-- 順序讀緩沖,提高順序讀效率 
  4.  
  5. +read_rnd_buffer_size-- 隨機讀緩沖,提高隨機讀效率 
  6.  
  7. +sort_buffer_size-- 排序緩沖,提高排序效率 
  8.  
  9. +join_buffer_size-- 表連接緩沖,提高表連接效率 
  10.  
  11. +binlog_cache_size-- 二進制日志緩沖,提高二進制日志寫入效率ß 
  12.  
  13. +tmp_table_size-- 內存臨時表,提高臨時表存儲效率 
  14.  
  15. +thread_stack-- 線程堆棧,暫時寄存SQL語句/存儲過程 
  16.  
  17. +thread_cache_size-- 線程緩存,降低多次反復打開線程開銷 
  18.  
  19. +net_buffer_length-- 線程持連接緩沖以及讀取結果緩沖 
  20.  
  21. +bulk_insert_buffer_size-- MyISAM表批量寫入數據緩沖 
  22.  
  • global級的內存分配
  1. global buffer(全局內存分配總和) = 
  2.  
  3. innodb_buffer_pool_size 
  4.  
  5. -- InnoDB高速緩沖,行數據、索引緩沖,以及事務鎖、自適應哈希等 
  6.  
  7. + innodb_additional_mem_pool_size 
  8.  
  9. -- InnoDB數據字典額外內存,緩存所有表數據字典 
  10.  
  11. +innodb_log_buffer_size 
  12.  
  13. -- InnoDB REDO日志緩沖,提高REDO日志寫入效率 
  14.  
  15. +key_buffer_size 
  16.  
  17. -- MyISAM表索引高速緩沖,提高MyISAM表索引讀寫效率 
  18.  
  19. +query_cache_size 
  20.  
  21. --查詢高速緩存,緩存查詢結果,提高反復查詢返回效率+table_cahce -- 表空間文件描述符緩存,提高數據表打開效率 
  22.  
  23. +table_definition_cache 
  24.  
  25. --表定義文件描述符緩存,提高數據表打開效率 

參數的優化最終目的是讓MySQL更好地利用資源通過合理地控制內存的分配,合理的CPU使用建議降低Session的內存分配。

10 server-id

復制架構時確保 server-id 要不同,通常主ID要小于從ID。

11 log_bin

如果你想讓數據庫服務器充當主節點的備份節點,那么開啟二進制日志是必須的。如果這么做了之后,還別忘了設置server_id為一個唯一的值。就算只有一個服務器,如果你想做基于時間點的數據恢復,這(開啟二進制日志)也是很有用的:從你最近的備份中恢復(全量備份),并應用二進制日志中的修改(增量備份)。

二進制日志一旦創建就將***保存。所以如果你不想讓磁盤空間耗盡,你可以用 PURGE BINARY LOGS 來清除舊文件,或者設置expire_logs_days 來指定過多少天日志將被自動清除。記錄二進制日志不是沒有開銷的,所以如果你在一個非主節點的復制節點上不需要它的話,那么建議關閉這個選項。

12 skip_name_resolve

當客戶端連接數據庫服務器時,服務器會進行主機名解析,并且當DNS很慢時,建立連接也會很慢。因此建議在啟動服務器時關閉skip_name_resolve選項而不進行DNS查找。唯一的局限是之后GRANT語句中只能使用IP地址了,因此在添加這項設置到一個已有系統中必須格外小心。

13 sync_binlog

sync_binlog 的默認值是0,像操作系統刷其他文件的機制一樣,MySQL不會同步到磁盤中去而是依賴操作系統來刷新binary log。

當sync_binlog =N (N>0) ,MySQL 在每寫N次二進制日志binary log時,會使用fdatasync()函數將它的寫二進制日志binary log同步到磁盤中去。當innodb_flush_log_at_trx_commit和sync_binlog 都為 1 時是最安全的,在mysqld服務崩潰或者服務器主機crash的情況下,binary log只有可能丟失最多一個語句或者一個事務。但是魚與熊掌不可兼得,雙1會導致頻繁的IO操作,因此該模式也是最慢的一種方式。出于我們的業務考慮在業務壓力允許的情況下默認的都是雙1配置。

14 log_slave_update

當業務中需要使用級聯架構的時候log_slave_update = 1這個參數必須打開,否者第三級可能無法接收到***級產生的binlog,從而無法進行數據同步。

15 tmpdir

如果內存臨時表超出了限制,MySQL就會自動地把它轉化為基于磁盤的MyISAM表,存儲在指定的tmpdir目錄下.因此盡可能將tmpdir配置到性能好速度快的存儲設備上。

16 慢日志相關

  1. slow_query_log = 1 #打開慢日志 
  2.  
  3. slow_query_log_file = /mysql/log/mysql.slow 
  4.  
  5. long_query_time = 0.5 #設置超過多少秒的查詢會入慢日志 

其他問題

1 SSD對參數的影響

隨著科學技術的發展,越來越多的存儲設備開始由傳統的機械組件轉向由電子元件組成的***存儲,且價錢越來越能讓企業接受。存儲組件速度提升后,再用傳統機械組件的DB配置就顯得浪費了,所以就需要針對不同的存儲技術對MySQL配置作出調整,比如 innodb_io_capacity需要調大, 日志文件和redo放到機械硬盤, undo放到SSD, atomic write不需要Double Write Buffer, InnoDB壓縮, 單機多實例+cgroup等等。分析 I/O 情況,動態調整 innodb_io_capacity 和 innodb_max_dirty_pages_pct;試圖調整 innodb_adaptive_flushing,查看效果。

2 線程池設置

針對innodb_write_io_threads 和 innodb_read_io_threads 的調優我們目前沒有做,但我相信調整為8或者16,系統 I/O 性能會更好。還有,需要注意以下幾點:任何一個調整,都要建立在數據的支撐和嚴謹的分析基礎上,否則都是空談; 這類調優是非常有意義的,是真正能帶來價值的,所以需要多下功夫,并且盡可能地搞明白為什么要這么調整。

3 CPU相關

  • Innodb_thread_concurrency=0
  • Innodb_sync_spin_loops=288
  • table_definition_cache=2000

4 IO相關的

  • Innodb_flush_method 建議用O_DIRECT
  • Innodb_io_capacity 設置成磁盤支持***IOPS
  • Innodb_wirte_io_threads=8
  • Innodb_read_io_threads=8
  • Innodb_purge_threads=1
  • Innodb的預讀方面,如果基于主建或是唯一索引的系統,建議禁用預讀
  • Innodb_random_read_ahead = off
責任編輯:武曉燕
相關推薦

2015-10-30 17:50:18

互聯網金融

2013-09-11 16:40:35

互聯網金融大數據金融大數據

2018-11-23 10:05:27

互聯網金融行業互聯網金融

2014-06-10 11:09:15

互聯網金融

2013-09-05 10:04:01

互聯網金融大數據金融大數據

2014-01-03 14:56:49

互聯網金融

2015-07-22 09:39:27

企商象云互聯網

2013-12-06 11:51:24

2015-02-11 14:24:39

2015-06-24 15:35:54

2015-08-19 21:56:35

互聯網+/華三

2015-12-29 17:30:20

朗新

2013-12-12 13:02:01

2018-08-28 06:32:35

數據安全互聯網金融行業

2014-04-01 15:28:10

互聯網金融信息安全

2017-07-13 09:38:04

互聯網大會 金融

2011-06-16 11:01:43

中國互聯網互聯網服務互聯網

2013-10-21 10:14:03

阿里云阿里云開發者大會金融

2013-08-28 13:51:20

大數據金融大數據

2013-11-07 17:22:37

百度互聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 三级特黄特色视频 | 国产超碰人人爽人人做人人爱 | 欧美在线观看一区二区 | 国产二区精品视频 | www国产亚洲精品久久网站 | 日韩免费视频一区二区 | 成人在线免费观看av | 97精品国产 | 国产激情一区二区三区 | 97精品国产一区二区三区 | 欧美色综合一区二区三区 | 成人毛片网 | 亚洲欧美日韩国产 | 欧美成人精品在线 | 极品粉嫩国产48尤物在线播放 | 国产精品区二区三区日本 | 日韩综合在线 | 久久6视频| 福利国产 | 在线观看成人免费视频 | 黄色小视频大全 | 成人一区av | 欧美日韩精品在线一区 | 欧美成人一级 | 国产精品久久久久久久久久久久久久 | 亚洲区在线 | 亚洲精品一区国产精品 | 国产精品国产 | 免费黄色片视频 | 国产精品美女视频 | 激情久久久久 | 日韩中文一区 | 成人做爰www免费看视频网站 | 国产成人精品a视频一区www | 久久成人综合 | 久久精品中文字幕 | 99热激情| 久久国内| 亚洲成av片人久久久 | 欧美一级欧美一级在线播放 | 日韩在线视频播放 |