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

Mysql(MyISAM)的讀寫互斥鎖問題的解決方法

 更新時間:2011年09月27日 00:32:11   作者:  
最近因為數(shù)據(jù)庫讀的請求增加,出現(xiàn)了比較嚴重的讀寫鎖問題,由于主從分離,主服務(wù)器很快的執(zhí)行完了寫入的操作,但從庫由于有大量的select的查詢,會被這些來自主輔同步的update,insert嚴重堵塞,最后造成所有的Mysql從庫負載迅速上升。
由于沒辦法在短期內(nèi)增加讀的服務(wù)器,所以采取對Mysql進行了一些配置,以犧牲數(shù)據(jù)實時性為代價,來換取所有服務(wù)器的生命安全。呵呵,具體相關(guān)調(diào)整以及思路如下:

MyISAM在讀操作占主導(dǎo)的情況下是很高效的??梢坏┏霈F(xiàn)大量的讀寫并發(fā),同InnoDB相比,MyISAM的效率就會直線下降,而且,MyISAM和 InnoDB的數(shù)據(jù)存儲方式也有顯著不同:通常,在MyISAM里,新數(shù)據(jù)會被附加到數(shù)據(jù)文件的結(jié)尾,可如果時常做一些UPDATE,DELETE操作之后,數(shù)據(jù)文件就不再是連續(xù)的,形象一點來說,就是數(shù)據(jù)文件里出現(xiàn)了很多洞洞,此時再插入新數(shù)據(jù)時,按缺省設(shè)置會先看這些洞洞的大小是否可以容納下新數(shù)據(jù),如果可以,則直接把新數(shù)據(jù)保存到洞洞里,反之,則把新數(shù)據(jù)保存到數(shù)據(jù)文件的結(jié)尾。之所以這樣做是為了減少數(shù)據(jù)文件的大小,降低文件碎片的產(chǎn)生。但 InnoDB里則不是這樣,在InnoDB里,由于主鍵是cluster的,所以,數(shù)據(jù)文件始終是按照主鍵排序的,如果使用自增ID做主鍵,則新數(shù)據(jù)始終是位于數(shù)據(jù)文件的結(jié)尾。

了解了這些基礎(chǔ)知識,下面說說MyISAM幾個容易忽視的配置選項:

concurrent_insert:

通常來說,在MyISAM里讀寫操作是串行的,但當對同一個表進行查詢和插入操作時,為了降低鎖競爭的頻率,根據(jù)concurrent_insert的設(shè)置,MyISAM是可以并行處理查詢和插入的:

當concurrent_insert=0時,不允許并發(fā)插入功能。

當concurrent_insert=1時,允許對沒有洞洞的表使用并發(fā)插入,新數(shù)據(jù)位于數(shù)據(jù)文件結(jié)尾(缺?。?

當concurrent_insert=2時,不管表有沒有洞洞,都允許在數(shù)據(jù)文件結(jié)尾并發(fā)插入。

這樣看來,把concurrent_insert設(shè)置為2是很劃算的,至于由此產(chǎn)生的文件碎片,可以定期使用OPTIMIZE TABLE語法優(yōu)化。

max_write_lock_count:

缺省情況下,寫操作的優(yōu)先級要高于讀操作的優(yōu)先級,即便是先發(fā)送的讀請求,后發(fā)送的寫請求,此時也會優(yōu)先處理寫請求,然后再處理讀請求。這就造成一個問題:一旦我發(fā)出若干個寫請求,就會堵塞所有的讀請求,直到寫請求全都處理完,才有機會處理讀請求。此時可以考慮使用max_write_lock_count:

max_write_lock_count=1

有了這樣的設(shè)置,當系統(tǒng)處理一個寫操作后,就會暫停寫操作,給讀操作執(zhí)行的機會。

low-priority-updates:

我們還可以更干脆點,直接降低寫操作的優(yōu)先級,給讀操作更高的優(yōu)先級。

low-priority-updates=1

綜合來看,concurrent_insert=2是絕對推薦的,至于max_write_lock_count=1和low-priority-updates=1,則視情況而定,如果可以降低寫操作的優(yōu)先級,則使用low-priority-updates=1,否則使用max_write_lock_count=1。

相關(guān)文章

  • MySQL幾點重要的性能指標計算和優(yōu)化方法總結(jié)

    MySQL幾點重要的性能指標計算和優(yōu)化方法總結(jié)

    下面小編就為大家?guī)硪黄狹ySQL幾點重要的性能指標計算和優(yōu)化方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL性能參數(shù)詳解之Max_connect_errors 使用介紹

    MySQL性能參數(shù)詳解之Max_connect_errors 使用介紹

    這篇文章主要介紹了MySQL性能參數(shù)詳解之Max_connect_errors 使用介紹,需要的朋友可以參考下
    2016-05-05
  • 更改MySQL數(shù)據(jù)庫的編碼為utf8mb4問題

    更改MySQL數(shù)據(jù)庫的編碼為utf8mb4問題

    這篇文章主要介紹了更改MySQL數(shù)據(jù)庫的編碼為utf8mb4問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MySQL分區(qū)表的基本入門教程

    MySQL分區(qū)表的基本入門教程

    這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)表的基本入門教程,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • MySQL 那些常見的錯誤設(shè)計規(guī)范,你都知道嗎

    MySQL 那些常見的錯誤設(shè)計規(guī)范,你都知道嗎

    今天來看一看 MySQL 設(shè)計規(guī)范中幾個常見的錯誤例子,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • MySQL 5.7解壓版安裝、卸載及亂碼問題的圖文解決方法

    MySQL 5.7解壓版安裝、卸載及亂碼問題的圖文解決方法

    這篇文章主要介紹了MySQL 5.7解壓版安裝、卸載及亂碼問題的圖文解決方法,本文分步驟給大家介紹的非常詳細,需要的朋友可以參考下
    2017-07-07
  • MySQL用戶與權(quán)限的管理詳解

    MySQL用戶與權(quán)限的管理詳解

    這篇文章主要介紹了MySQL用戶與權(quán)限的管理,詳細分析了mysql用戶密碼、權(quán)限設(shè)置與使用相關(guān)操作原理及注意事項,需要的朋友可以參考下
    2019-07-07
  • MySQL binlog 遠程備份方法詳解

    MySQL binlog 遠程備份方法詳解

    以前備份binlog時,都是先在本地進行備份壓縮,然后發(fā)送到遠程服務(wù)器中,但是這種備份方式非常的不安全,下面通過本文給大家介紹MySQL binlog 遠程備份的方法,需要的朋友一起學(xué)習(xí)吧
    2016-05-05
  • MySQL基礎(chǔ)教程之事務(wù)異常情況

    MySQL基礎(chǔ)教程之事務(wù)異常情況

    事務(wù)(Transaction)是訪問和更新數(shù)據(jù)庫的程序執(zhí)行單元;事務(wù)中可能包含一個或多個sql語句,這些語句要么都執(zhí)行,要么都不執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)教程之事務(wù)異常情況的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • MySQL的中文UTF8亂碼問題

    MySQL的中文UTF8亂碼問題

    MySQL從4.x版本開始支持Unicode,3.x只有l(wèi)atin1編碼。剛工作的時候就開始用MySQL了,用的php存取,網(wǎng)頁xxx.php是gb2312的編碼,存進去的數(shù)據(jù)用php取出來是中文,用phpMyAdmin執(zhí)行select、update、dump都是中文,沒有亂碼問題。
    2010-05-05

最新評論

苍溪县| 汨罗市| 定陶县| 南华县| 平武县| 内黄县| 介休市| 海盐县| 江北区| 和政县| 家居| 九寨沟县| 弥勒县| 湘潭市| 抚顺市| 响水县| 青河县| 亚东县| 张家界市| 武宣县| 雷州市| 华容县| 泊头市| 防城港市| 延津县| 顺平县| 华阴市| 武宁县| 盘锦市| 南雄市| 滦南县| 绥滨县| 类乌齐县| 柳河县| 屏南县| 房山区| 衡南县| 城口县| 涞水县| 巍山| 小金县|