標籤:高效 情況 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