標籤:mysql 資料庫 儲存引擎
MySQL資料庫儲存引擎
MySQL資料庫是一種關係型資料庫,資料時存放在資料庫中的一張一張的表中的,各個表之間或有關聯,表中的每行相關,每列是不相關。這是關係型資料庫的基本存放裝置方式。
MySQL儲存引擎是為了在各種不同的條件下對資料存放的可靠性、關聯性、讀寫等方面做出的一個可供選擇的儲存模式。
當前使用較多的MySQL儲存引擎主要有以下幾個,MyISAM,InnoDB,BdB,Memory等,這些儲存引擎主要在以下幾個方面有所區分,鎖定水平、處理方式、儲存方式和索引技巧方面有所不同。
mysql下顯示儲存引擎和更改儲存引擎的方法都很簡單
show engines;顯示所支援的
alter table tablename engine = whichengine;修改儲存引擎
create table tablename (id int,name char(15)) engine = whichengine;建立時更改
常見儲存引擎的區別:
1>MyISAM:它的前身是ISAM,它是ISAM的擴充,支援ISAM所不支援的索引和欄位管理功能,它的特點是表鎖定,可以處理高並發的讀寫操作,是預設的儲存引擎。
2>InnoDB和BdB:這兩個儲存引擎是唯一可支援交易處理的儲存引擎,區別是InnoDB是行鎖定的而BDB是頁鎖定的。
3>Memory:聽名字就知道這是一個用記憶體來暫存資料的儲存模式,讀寫效率自然不用說,但在資料庫關閉的時候資料會全部丟失。
三種鎖定水平:
1>表鎖定:為了防止多個使用者同時更新一張表,表鎖定在資料更新的時候它會鎖定整個表,所以在多使用者訪問時會造成很大延時,所以並發性差,但開銷小。
2>行鎖定:因為表鎖定的低並發,所以產生了行鎖定,在訪問資料庫時對資料庫的每一行進行鎖定,可以使得訪問不同行的使用者同時訪問同一張表,但它的開銷大,並且還會造成死結。(對於為什麼會產生死結的分析這裡給出一個部落格連結說的很盡http://www.cnblogs.com/bamboos/p/3532150.html)
3>頁鎖定:在行鎖定和表鎖定的中間生存著的便是頁鎖定了,它是折中方式。
本文出自 “痕迹” 部落格,請務必保留此出處http://wpfbcr.blog.51cto.com/10696766/1827175
MySQL資料庫儲存引擎