高效能Mysql這本書,在電腦裡面下載快半年了,一直沒時間看,最終決定在9月份每天花點時間把這本書看完,在這裡記錄一下書中的一些知識點,便於積累吧。
第一章 Mysql架構
第一章講的都是基礎
一、Mysql邏輯架構一共有三層。
頂層服務主要處理連結處理、授權、認證等。第二層是關鍵包括查詢解析、分析、最佳化、緩衝和內建函數等,還有各種儲存引擎提供功能也集中在這一層,預存程序、觸發器、試圖等。
二、預寫式交易記錄、MVCC (可以百度)
===============百度如下
.預寫式日誌。innodb有自己的記憶體資料緩衝(跟mysql伺服器層的查詢快取不是一回事,該緩衝最大不會超過資料庫的大小,這個我們的應用會比較小應該不會超過5G),寫入的時候可以先寫入記憶體。在寫入交易記錄,這個是順序IO比修改資料的隨機IO要快不少,同時innodb_flush_log_at_trx_commit,該寫入動作不跟事務同步,而是每秒執行一次,進一步提高效能。
innodb_flush_log_at_trx_commit (這個很管用)
抱怨Innodb比MyISAM慢 100倍?那麼你大概是忘了調整這個值。預設值1的意思是每一次事務提交或事務外的指令都需要把日誌寫入(flush)硬碟,這是很費時的。特別是使用電 池供電緩衝(Battery backed up cache)時。設成2對於很多運用,特別是從MyISAM錶轉過來的是可以的,它的意思是不寫入硬碟而是寫入系統緩衝。日誌仍然會每秒flush到硬 盤,所以你一般不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即使MySQL掛了也可能會丟失事務的資料。而值2隻會在整個作業系統
掛了時才可能丟資料。
===================
三、儲存引擎
1、myisam
平台通用,通過簡單的拷貝就可以 儲存為兩個檔案資料檔案和索引檔案
特性:
加鎖與並發、自動修複、手工修複、索引特性(blob和text前500個字元建立相關索引,支援全文索引)
延遲更新索引(delay_key_write)、壓縮的myisam表
百度來的
=====================
插入大資料時,有索引會很慢,可以DISABLE KEYS,或者直接在table中加入DELAY_KEY_WRITE
註:
delay_key_write這個參數只對myisam類型表有效
如果你某個表需要經常update操作,這個參數就很管用!
但等delay_key_write使用時,出現斷電或重啟時,會導致在cache的索引update沒來得及更新,所以必須在啟動參數加上 –myisam-recover,或者在conf設定myisam-recover=BACKUP,FORCE。這樣在你啟動mysql的時候會檢查你的 表並同步表和索引.
另外如果修複myisam類表可以在my.cnf中mysqld段設定myisam-recover恢複功能,參數有:default,force,backup,QUICK
http://www.cnblogs.com/zhizhesky/archive/2011/08/22/2149357.html
=======================
並發插入 (concurrent_insert)
=============== 百度來的
MyISAM儲存引擎有一個系統變數concurrent_insert,專門用以控制其並發插入的行為,其值分別可以為0、1或2。
·當concurrent_insert設定為0時,不允許並發插入。
·當concurrent_insert設定為1時,如果MyISAM表中沒有空洞(即表的中間沒有被刪除的行),MyISAM允許在一個進程讀表的同時,另一個進程從表尾插入記錄。這也是MySQL的預設設定。
·當concurrent_insert設定為2時,無論MyISAM表中有沒有空洞,都允許在表尾並發插入記錄。
==============
2、myisam merge
myisam的變種,合并表講幾個相同的myisam表合并為一個虛表,記錄日誌和資料倉儲的時候非常有用。
3、innodb
專為交易處理而設計,特別是短期事務,它將所有的資料共同儲存在一個或幾個的資料檔案中,這種資料檔案稱之為資料表空間
使用mvcc機制獲得高並發,預設隔離基本為repeatable read,使用間隙所,防止幻讀。
基於聚鏃索引
4、memory引擎
記憶體表,比myisam快一個數量級,存在記憶體當中,表結構在磁碟上,重啟後資料都會消失
但是使用表級加鎖,只支援較低的寫並發,也不支援blob和text欄位,只支援定長欄位,浪費了一些記憶體
好處:緩衝中間資料、周期性彙總資料,尋找和映射表。
5、archive引擎
只支援select和insert查詢,不支援索引,緩衝了資料寫操作、插入時進行了zlib壓縮,使的磁碟io較小比myisam,支援行級加鎖和專用緩衝區,可以高並發
適用於資料記錄和資料擷取
其他如:csv引擎、federated引擎、blackhole引擎、ndb cluster引擎、falcon引擎、solidDB引擎、pbxt引擎、maria引擎(準備替代myisam)