MySQL儲存引擎MyISAM與InnoDB

來源:互聯網
上載者:User

標籤:高效   情況   perl   查詢   外掛程式   MySQL系統   lin   creat   外鍵約束   

儲存引擎的實質就是如何?儲存資料,為儲存資料建立索引以及查詢、更改、刪除資料等技術實現的方法。

  • MySQL支援外掛程式式的表格儲存體引擎,這種專屬的外掛程式式體系架構,讓儲存引擎有了依賴應用的多樣性。其中較為知名的儲存引擎為MyISAM與InnoDB.
  • MySQL系統中,儲存引擎處於檔案系統之上,在資料儲存到資料檔案之前會先傳輸到儲存引擎,然後按照各個儲存引擎的儲存格式進行資料存放區。使用這種儲存引擎的主要優點在於,僅僅需要提供特殊應用的特性即可;資料庫中的系統開銷較小,更具有有效和高效的資料庫效能。
MyISAM儲存引擎特點
  • 1、不支援交易處理,需要事務支援的系統不能使用MyISAM作為儲存引擎
  • 2、表級鎖定形式,資料在更新時會鎖定整個表。
  • 3、資料庫在讀寫的過程中相互阻塞:

    在資料寫入的過程中阻塞使用者對資料的讀取;
    在資料讀取的過程中阻塞使用者寫入資料;

  • 4、可以通過key_buffer_size來設定緩衝索引,提高訪問的效能,減少磁碟IO的壓力。
  • 5、採用MyISAM儲存引擎不支援外鍵約束,只支援全文索引。
  • 6、採用MyISAM儲存引擎進行資料單獨寫入或者讀取,速度較快且佔用資源相對要少。
  • 7、MyISAM儲存的檔案類型:

    .frm 檔案儲存體表定義;
    資料檔案副檔名為.MYD(MYDATA);
    索引副檔名為.MYI(MYIndex);

InnoDB儲存引擎特點
  • 1、支援交易處理,支援四個交易隔離等級。
  • 2、行級鎖定,但是全表掃描時會鎖定整個表。
  • 3、讀寫阻塞與交易隔離等級相關。
  • 4、具有非常高效的緩衝特性,能緩衝索引,也能快取資料。
  • 5、表與主鍵以簇的方式儲存。
  • 6、支援分區、資料表空間,類似oracle資料庫。
  • 7、支援外鍵約束,MySQL5.5以前不支援全文索引,後面的版本支援。
  • 8、適合對硬體資源要求較高的場合。
儲存引擎的更改與選擇方式
  • 查看資料庫使用的儲存引擎方法:

show table status from school where name=‘info‘;

或者:

show create table info;

配置儲存引擎的幾種方式:
  • 1、使用alter table命令修改:
    (修改現有表的儲存引擎)

alter table info engine=MyISAM/InnoDB; //進入資料庫操作

  • 2、修改預設儲存引擎:
    (針對後面新建立的表格起作用)

#vim /etc/my.cnf

default-storage-engine=MyISAM/InnoDB      //在[mysql]服務欄下設定預設儲存引擎
  • 3、在建立表時指定使用的儲存引擎種類: //在mysql模式下

create table test(name varchar(10)) engine=InnoDB;
show create table test;

  • 4、mysql_convert_table_format命令可以批量轉換儲存引擎
    註:此種工具使用只能存在於MySQL5.5版本以前。

yum install perl-DBI perl-DBD-MySQL -y //安裝操作運行庫

預設情況下只能將已存在的InnoDB的儲存引擎更改為MyISAM形式,若需要反過來更改需要更改命令執行指令碼:

vim /usr/local/mysql/bin/mysql_convert_table_format

(第四種同時更改多表的儲存引擎為在MySQL5.5版本為例)

$opt_help=$opt_version=$opt_verbose=$opt_force=0;$opt_user=$opt_database=$opt_password=undef;$opt_host="localhost";$opt_socket="";$opt_engine="MYISAM";$opt_port=0;$exit_status=0;GetOptions(  "e|engine|type=s"       => \$opt_type,        //32行,type更改為engine即可  "f|force"               => \$opt_force,  "help|?"               => \$opt_help,  "h|host=s"              => \$opt_host,  "p|password=s"          => \$opt_password,  "u|user=s"              => \$opt_user,  "v|verbose"             => \$opt_verbose,  "V|version"             => \$opt_version,  "S|socket=s"            => \$opt_socket,  "P|port=i"              => \$opt_port

然後用:(Linux模式下利用該命令)

mysql_convert_table_format --host=localhost --user=root --password=abc123 --socket=/tmp/mysql.socket --engine=InnoDB school test01 test02

--host=localhost    //表示本機資料庫--user=root           //表示登入使用者--password=abc123  //表示登入密碼--socket=/tmp/mysql.socket  //指定socket目錄--engine-InnoDB       //需要更改後的儲存引擎school      //指定需要更改的庫test01 test02    //需要同時更改的表

可以同時更改test01 test02多個表的儲存引擎。

MySQL儲存引擎MyISAM與InnoDB

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.