天天看點

MySQL引擎講解

  MySQL支援三個引擎:ISAM、MyISAM和HEAP,根據需求不同來選擇不同的引擎

  資料庫的引擎到決于 MySQL 在安裝的時候是如何被編譯的,要添加一個新的引擎,就必須重新編譯

    --with-plugins=partition,innobase

ISAM:

    讀取操作速度很快,而且不占用大量的記憶體和存儲資源

    不支援事物處理

    不能夠容錯

    若硬碟崩潰,将無法恢複資料

MyISAM:(預設表類型)

MyISAM是MySQL的ISAM擴充格式和預設的資料庫引擎,有如下擴充:

1)、二進制層次的可移植性。

2)、NULL列索引。

3)、對變長行比ISAM表有更少的碎片。

4)、支援大檔案。

5)、更好的索引壓縮。

6)、更好的鍵碼統計分布。

7)、更好和更快的auto_increment處理。

MyISAM适合:(1)做很多count 的計算;(2)插入不頻繁,查詢非常頻繁;(3)沒有事務

InnoDB Berkley DB(BDB):(支援事物安全)

    支援外鍵

    支援行鎖

    支援事務

    采用雙授權:GPL和 商業授權

  适用于有大量的 update 和 insert 操作,高并發 QPS(每秒查詢率) 較高 的環境

檢視資料庫引擎:

 檢視現已提供存儲引擎: mysql> show engines;

  檢視目前預設存儲引擎: mysql> show variables like '%storage_engine%';

  檢視某個表用了什麼引擎(在顯示結果裡,參數 engine 後面的參數):

            mysql> show create table 表名;

         如: mysql> show create test_db;

修改 MySQL 表空間引擎:

 設定 InnoDB 為預設引擎:

    在配置檔案my.cnf 中的[mysqld] 下面加入 default-storage-engine=INNODB

 修改表引擎:

    alter table test_db  engine=myisam;

    alter table test_db  engine=innodb;

    注意:如果添加innodb 引擎報錯,需删除 /mysql/data 目錄下的             ib_logfile0,ib_logfile1 檔案即可

本文轉自   tianshuai369   51CTO部落格,原文連結:http://blog.51cto.com/songqinglong/1683078