mysql中myisam innodb的區別有哪些

時間 2022-04-23 04:34:44

1樓:熱愛影視者

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

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

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

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

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

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

mysql中的myisam和innodb的區別

mysql中myisam和innodb的區別

2樓:

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:支援

3樓:醫者仁也吧

as we had had a long walk through the markets

mysql資料庫的myisam和innodb的區別

mysql怎麼定義變數,mysql中如何定義變數

下面是乙個簡單的 儲存過程的例子.declare v index int 定義乙個 名稱為 v index 的變數,型別為 intmysql 變數定義應該只能在 儲存過程,函式裡面定義.不像 oracle sql server 乙個 begin end 裡面就可以定義 執行了。mysql delim...

關於mysql 的儲存過程,mysql中的儲存過程是什麼意思啊

修改結束符 delimiter create procedure.end delimiter 簡易用sqlyog,寫過程蠻好用的 mysql中的儲存過程是什麼意思啊 直白的講就是把sql語句進行封裝,然後留個介面,使用的時候直接呼叫介面。可以把對資料的各種處理寫在儲存過程裡 程式只需呼叫 或者 傳參...

mysql中修改列名,如何將mysql的表名和列名轉換為大寫

alter table 表名 change abc def 列型別 比如 alter table testtb change name newname char alter table table name change abc def integer alter table name set ab...

mysql 函式中與oracle中ltrim函式功能相同的函

一 ansi字元函式 字元函式用於在sql裡以不同於儲存方式的格式來表示字串。串接就是把兩個單獨的字串組合為乙個。子串的概念就是從字串裡提取一部分。translate函式用於逐字元地把乙個字串變換為另乙個,它通常有3個引數 要被轉換的字串 要轉換的字元系列 代入字元的列表。二 常用字元函式 1 串接...

wampserver 中 mysql無法啟動

具體方法是控制面板 管理工具 服務,找到iis然後停止服務,會有三個選項,你不用管全部停止 即可,當然這只是第一步,還有另外乙個方面可能導致你的mysql執行不正常,如果你的機器上已經裝過了mysql,那麼你需要做以下事情,開啟mysql的配置程式,就是乙個扳手乙個改錐的藍色圖示,然後一路下一步,等...