mysql資料庫的myisam和innodb的區別

時間 2022-02-05 14:20:13

1樓:

1、 儲存結構

myisam:每個myisam在磁碟上儲存成三個檔案。第一個檔案的名字以表的名字開始,副檔名指出檔案型別。.

frm檔案儲存表定義。資料檔案的副檔名為.myd (mydata)。

索引檔案的副檔名是.myi (myindex)。

innodb:所有的表都儲存在同一個資料檔案中(也可能是多個檔案,或者是獨立的表空間檔案),innodb表的大小隻受限於作業系統檔案的大小,一般為2gb。

2、 儲存空間

myisam:可被壓縮,儲存空間較小。支援三種不同的儲存格式:靜態表(預設,但是注意資料末尾不能有空格,會被去掉)、動態表、壓縮表。

innodb:需要更多的記憶體和儲存,它會在主記憶體中建立其專用的緩衝池用於高速緩衝資料和索引。

3、 事務支援

myisam:強調的是效能,每次查詢具有原子性,其執行數度比innodb型別更快,但是不提供事務支援。

innodb:提供事務支援事務,外部鍵等高階資料庫功能。 具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (acid compliant))型表。

4、 curd操作

myisam:如果執行大量的select,myisam是更好的選擇。(因為沒有支援行級鎖),在增刪的時候需要鎖定整個**,效率會低一些。

相關的是innodb支援行級鎖,刪除插入的時候只需要鎖定改行就行,效率較高

innodb:如果你的資料執行大量的insert或update,出於效能方面的考慮,應該使用innodb表。delete 從效能上innodb更優,但delete from table時,innodb不會重新建立表,而是一行一行的刪除,在innodb上如果要清空儲存有大量資料的表,最好使用truncate table這個命令。

5、 外來鍵

myisam:不支援

innodb:支援

2樓:醫者仁也吧

as we had had a long walk through the markets

mysql中myisam innodb的區別有哪些?

3樓:熱愛影視者

innodb支援事務,myisam不支援,對於innodb每一條sql語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條sql語言放在begin和commit之間,組成一個事務;

innodb支援外來鍵,而myisam不支援。對一個包含外來鍵的innodb錶轉為myisam會失敗;

innodb是聚集索引,資料檔案是和索引綁在一起的,必須要有主鍵,通過主鍵索引效率很高。但是輔助索引需要兩次查詢,先查詢到主鍵,然後再通過主鍵查詢到資料。因此,主鍵不應該過大,因為主鍵太大,其他索引也都會很大。

而myisam是非聚集索引,資料檔案是分離的,索引儲存的是資料檔案的指標。主鍵索引和輔助索引是獨立的。

innodb不儲存表的具體行數,執行select count(*) from table時需要全表掃描。而myisam用一個變數儲存了整個表的行數,執行上述語句時只需要讀出該變數即可,速度很快;

innodb不支援全文索引,而myisam支援全文索引,查詢效率上myisam要高;

如何改mysql資料庫資料庫密碼

文件類共創空間 修改mysql是需要有mysql裡的root許可權的,下面介紹幾種修改mysql資料庫密碼的方法 方法一使用phpmyadmin,這是最簡單的了,修改mysql庫的user表,不過別忘了使用password函式。方法二使用mysqladmin,這是前面宣告的一個特例。mysqladm...

mysql預設密碼是多少,mysql資料庫的使用者名稱是sa 預設密碼是什麼

mysql預設密碼設定如下命令就可以獲得 cd path path usr local mysql bin mysql u root p mysql use mysql mysql update user set password password new password where user u...

myeclipse連線mysql資料庫中文亂碼問題

action是get還是post get的話好像頭部設定一下編碼方式就可以了 contenttype text html chartset gbk pageencoding gbk post的話在處理頁面寫上 request.setcharacterencoding gbk 實在不行就弄個filte...