您好,登錄后才能下訂單哦!
這篇文章主要講解了“MySQL參數調整方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL參數調整方法”吧!
事務具有四個特性:原子性(Atomiocity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),這四個特性簡稱ACID特性。
原子性:事務是數據庫的邏輯工作單位,事務中包括的所有操作要么都做,要么都不做。
一致性:事務執行的結果必須是使數據庫從一個一致性的狀態變到另外一個一致性狀態。
隔離性:一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對其他事務是隔離的,并發執行的各個事務之間互相不干擾。
持久性:一個事務一旦成功提交,對數據庫中數據的修改就是持久性的。接下來其他的其他。
READ UNCOMMITED:SELECT的時候允許臟讀,即SELECT會讀取其他事務修改而還沒有提交的數據。
READ COMMITED:SELECT的時候不能重復讀,即同一個事務中兩次執行同樣的查詢語句,若在第一次與第二次查詢之間時間段,其他事務又剛好修改了其查詢的數據且提交了,則兩次讀到的數據不一致。
REPEATABLE READ:SELECT的時候可以重復讀,即同一個事務中兩次執行同樣的查詢語句,得到的數據始終都是一致的。
SERIALIZABLE:與可重復讀的唯一區別是,默認把普通的SELECT語句改成SELECT …. LOCK IN SHARE MODE。即為查詢語句涉及到的數據加上共享瑣,阻塞其他事務修改真實數據。
綜合考慮系統的應用和性能,建議使用默認的REPEATABLE READ級別,或者READ COMMITED級別。
這是InnoDB最重要的設置,對InnoDB性能有決定性的影響。默認的設置只有8M,所以默認的數據庫設置下面InnoDB性能很差。在只有 InnoDB存儲引擎的數據庫服務器上面,可以設置60-80%的內存。更精確一點,在內存容量允許的情況下面設置比InnoDB tablespaces大10%的內存大小。它用來設置用于緩存 InnoDB 索引及數據塊的內存區域大小,類似于 MyISAM 存儲引擎的 key_buffer_size 參數,當然,可能更像是 Oracle 的 db_cache_size。簡單來說,當我們操作一個 InnoDB 表的時候,返回的所有數據或者去數據過程中用到的任何一個索引塊,都會在這個內存區域中走一遭。
和key_buffer_size 對于 MyISAM 引擎一樣,innodb_buffer_pool_size 設置了 InnoDB 存儲引擎需求最大的一塊內存區域的大小,直接關系到 InnoDB存儲引擎的性能,所以如果我們有足夠的內存,盡可將該參數設置到足夠打,將盡可能多的 InnoDB 的索引及數據都放入到該緩存區域中,直至全部。
我們可以通過 (Innodb_buffer_pool_read_requests – Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests * 100% 計算緩存命中率,并根據命中率來調整 innodb_buffer_pool_size 參數大小進行優化。
該參數設定了事務提交時內存中log信息的刷新頻率,有3個值, 默認設置的是1, 也就是同步刷新:
=0時, 日志緩沖每秒一次地被寫到日志文件,并且對日志文件做到磁盤操作的刷新。任何mysqld進程的崩潰會刪除崩潰前最后一秒的事務;
=1時,在每個事務提交時,日志緩沖被寫到日志文件,對日志文件做到磁盤操作的刷新。Truly ACID。速度慢;
=2時,在每個事務提交時,日志緩沖被寫到文件,但不對日志文件做到磁盤操作的刷新。只有操作系統崩潰或掉電才會刪除最后一秒的事務,不然不會丟失事務。
INNODB日志緩存的大小,磁盤速度是很慢的,直接將log寫道磁盤會影響InnoDB的性能,該參數設定了log buffer的大小,一般4M。如果有大的blob操作,可以適當增大。
INNODB日志文件的大小,該參數決定了recovery speed。太大的話recovery就會比較慢,太小了影響查詢性能,一般取1GB可以兼顧性能和recovery的速度。
該參數指定表數據和索引存儲的空間,可以是一個或者 多個文件。最后一個數據文件必須是自動擴充的,也只有最后一個文件允許自動擴充。這樣,當空間用完后,自動擴充數據文件就會自動增長(以8MB為單位)以 容納額外的數據。例如: innodb_data_file_path=/disk1 /ibdata1:900M;/disk2/ibdata2:50M:autoextend兩個數據文件放在不同的磁盤上()。數據首先放在ibdata1 中,當達到900M以后,數據就放在ibdata2中。一旦達到50MB,ibdata2將以8MB為單位自動增長。如果磁盤滿了,需要在另外的磁盤上面 增加一個數據文件。
該參數設置了放置表空間數據的目錄,默認在mysql的數據目錄,由MySQL參數datadir指定。設置到和MySQL 安裝文件不同的分區可以提高性能。可以與innodb_data_file_path配合使用,用innodb_data_home_dir來指定共同位置,然后在通過 inndo_data_file_path來指定文件名即可。
此參數指定InnoDB表可用的文件I/O線程數,建議在非Windows平臺中這個參數設置為4。
該參數設定了事務提交時內存中log信息的處理。
1) =1時,在每個事務提交時,日志緩沖被寫到日志文件,對日志文件做到磁盤操作的刷新。Truly ACID。速度慢。默認為此值。
2) =2時,在每個事務提交時,日志緩沖被寫到文件,但不對日志文件做到磁盤操作的刷新。只有操作系統崩潰或掉電才會刪除最后一秒的事務,不然不會丟失事務。
3) =0時, 日志緩沖每秒一次地被寫到日志文件,并且對日志文件做到磁盤操作的刷新。任何mysqld進程的崩潰會刪除崩潰前最后一秒的事務。
影響了服務器flush數據或日志文件的方法。設置InnoDB同步IO的方式
1) Default – 使用fsync()。
2) O_SYNC 以sync模式打開文件,通常比較慢。
3) O_DIRECT,在Linux上使用Direct IO。跳過了操作系統的文件系統Disk Cache,讓MySQL直接讀寫磁盤,可以顯著提高速度,特別是在RAID系統上。避免額外的數據復制和double buffering(mysql buffering 和OS buffering)。避免雙緩沖(double buffering)和降低swap的壓力。大多數情況下可以提高性能.但是注意如果RAID cache不夠的話,寫IO的操作會有麻煩。
tmp_table_size,它規定了內存臨時表的最大值,每個線程都要分配。(實際起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果內存臨時表超出了限制,MySQL就會自動地把它轉化為基于磁盤的MyISAM表,此參數不限制create tables創建的內存表, 存儲在指定的tmpdir目錄下,默認:
mysql> show variables like "tmpdir";
這個變量定義了用戶可以創建的內存表(memory table)的大小。這個值用來計算內存表的最大行數值。如果內存內的臨時表超過該值,MySQL自動將它轉換為硬盤上的MyISAM表。這個變量支持動態改變,即set @max_heap_table_size=# ,但是對于已經存在的內存表就沒有什么用了,除非這個表被重新創建(create table)或者修改(alter table)或者truncate table。服務重啟也會設置已經存在的內存表為全局max_heap_table_size的值。這個變量和tmp_table_size一起限制了內部內存表的大小。
long_query_time,對SQL執行設定一個時間限制,單位為秒,超出這個時間,測返回錯誤。該參數可動態設置:set global long_query_time=1800;
如果兩個表關聯查詢,但關聯的字段又沒有索引時,使用此參數分配的內存空間。
MyISAM表的索引塊分配了緩沖區,由所有線程共享。key_buffer_size是索引塊緩沖區的大小。鍵值緩沖區即為鍵值緩存.用key_buffer_size結合Key_blocks_unused狀態變量和緩沖區塊大小,可以確定使用的鍵值緩沖區的比例。從key_cache_block_size服務器變量可以獲得緩沖區塊大小。使用的緩沖區的比例為:
1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
注意:MyISAM的數據文件讀取依賴于操作系統自身的IO緩存,如果有MyISAM表,要預留更多的內存給操作系統。
wait_timeout,設置非互交連接會話的空閑超時時間,單位為s。
interactive_timeout,設置互交連接會話的空閑超時時間,單位為s。
感謝各位的閱讀,以上就是“MySQL參數調整方法”的內容了,經過本文的學習后,相信大家對MySQL參數調整方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。