mysql 引擎學習札記

2021-09-02 12:50:45 字數 2366 閱讀 4560

[size=medium]

1. isam : 擅長讀取,讀取速度快,且不占用大量的記憶體和儲存,缺點:不支援事務,不能容錯(說法有待商榷)

2. myisam: isam的擴充套件格式和預設的資料庫引擎;提供了isam沒有的索引支援和大量的字段管理功能,而且提供了一種稱為**鎖定的機制,來優化併發的讀寫,其代價是你需要經常執行optimize table命令,來恢復被更新機制所浪費的空間。myisam強調了快速讀取操作,這就是為什麼mysql受到了web開發如此親睞的原因,因為web大量的操作都是讀。所以大多數虛擬機器提供商和internet平台提供商支援myisam格式。缺點:不能在表損壞後修復

heap:允許只駐留在記憶體中的,駐留在記憶體中臨時表的操作要比isam和myisam多要快。但是它管理的資料都是不穩定的,如果在斷電前沒有儲存,那麼所有的資料都會丟失,在資料行被刪除的時候,他也不會浪費大量的空間,heap**在你需要使用select表示式來選擇和操控資料的時候非常有用

4.innodb:儘管要比isam和myisam慢很多,但是innodb包括了對事物處理和外來鍵的支援,這兩點都是isam和myisam沒有的。

mysql 官方對innodb是這樣解釋的:innodb給mysql提供了具有提交、回滾和崩潰恢復能力的事務安全(acid相容)儲存引擎。innodb鎖定在行級並且也在select語句提供乙個oracle風格一致的非鎖定讀,這些特色增加了多使用者部署和效能。沒有在innodb中擴大鎖定的需要,因為在innodb中行級鎖定適合非常小的空間。innodb也支援foreign key強制。在sql查詢中,你可以自由地將innodb型別的表與其它mysql的表的型別混合起來,甚至在同乙個查詢中也可以混合。

innodb是為處理巨大資料量時的最大效能設計,它的cpu效率可能是任何其它基於磁碟的關聯式資料庫引擎所不能匹敵的。

innodb儲存引擎被完全與mysql伺服器整合,innodb儲存引擎為在主記憶體中快取資料和索引而維持它自己的緩衝池。innodb儲存它的表&索引在乙個表空間中,表空間可以包含數個檔案(或原始磁碟分割槽)。這與myisam表不同,比如在myisam表中每個表被存在分離的檔案中。innodb 表可以是任何尺寸,即使在檔案尺寸被限制為2gb的作業系統上。

innodb預設地被包含在mysql二進位制分發中。windows essentials installer使innodb成為windows上mysql的預設表。

innodb被用來在眾多需要高效能的大型資料庫站點上產生。著名的internet新聞站點slashdot.org執行在innodb上。 mytrix, inc.在innodb上儲存超過1tb的資料,還有一些其它站點在innodb上處理平均每秒800次插入/更新的

一般來說:myisam適合:1.不需要事務2.頻繁的查詢,很少的插入

innodb適合:1.可靠性要求比較高,或者要求事務

2.比較頻繁的插入和修改操作,並且表鎖定的機會比較高

附上別人的測試報告:

所有的效能測試在:micrisoft window xp sp2 , intel(r) pentinum(r) m processor 1.6oghz 1g 記憶體的電腦上測試。

測試方法:連續提交10個query, 表記錄總數:38萬 , 時間單位 s

引擎型別 myisam innodb 效能相差

count 0.0008357 3.0163 3609

查詢主鍵 0.005708 0.1574 27.57

查詢非主鍵 24.01 80.37 3.348

更新主鍵 0.008124 0.8183 100.7

更新非主鍵 0.004141 0.02625 6.338

插入 0.004188 0.3694 88.21

(1)加了索引以後,對於myisam查詢可以加快:4 206.09733倍,對innodb查詢加快510.72921倍,同時對myisam更新速度減慢為原來的1/2,innodb的更新速度減慢為原來的1/30。要看情況決定是否要加索引,比如不查詢的log表,不要做任何的索引。

(2)如果你的資料量是百萬級別的,並且沒有任何的事務處理,那麼用myisam是效能最好的選擇。

(3)innodb表的大小更加的大,用myisam可省很多的硬碟空間。

在我們測試的這個38w的表中,表占用空間的情況如下:

引擎型別 myisam innodb

資料 53,924 kb 58,976 kb

索引 13,640 kb 21,072 kb

占用總空間 67,564 kb 80,048 kb

另外乙個176w萬記錄的表, 表占用空間的情況如下:

引擎型別 myisam innordb

資料 56,166 kb 90,736 kb

索引 67,103 kb 88,848 kb

占用總空間 123,269 kb 179,584 kb

原文詳見:

[/size]

Python學習札記

1 strip 去除字串中所有不想要的空白符,split 方法建立乙個列表。2 sorted bif支援複製排序。3 分片,列表推導 4 工廠函式去除掉裡列表中重複的項。5 定義乙個類時,實際上是在定義乙個定製工廠函式。6 使用dict 工廠函式或使用 可以建立乙個空字典。要訪問乙個person字典...

mysql儲存引擎學習

文章摘抄至 那麼什麼是儲存引擎呢?儲存引擎說白了就是如何儲存資料 如何為儲存的資料建立索引和如何更新 查詢資料等技術的實現方法。因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎也可以稱為表型別 即儲存和操作此表的型別 在oracle 和sql server等資料庫中只有一種儲存引擎,所...

MySQL學習 儲存引擎

mysql 可以將資料以不同的技術儲存在檔案 記憶體 中,這種技術就稱作從儲存引擎。不同的儲存引擎使用不同的儲存機制,索引技巧,鎖定水平,最終提供廣泛且不同的功能。mysql支援的儲存引擎 當多個連線對記錄進行修改時需要保證資料的一致性與完整性,併發控制可以通過鎖機制實現。鎖 鎖顆粒 事務是區別於檔...