-
MySQL數據庫存儲引擎
-
存儲引擎概念
-
存儲引擎也稱為表類型
-
通過不同的技術比如說,存儲機制,索引技巧,鎖定水平等等,來提供不同的功能。
-
-
查看MySQL支持的存儲引擎
-
show engines\G;
-
-
-
常用引擎比較
-
-
對事務有需求
-
innodb
-
-
對寫入,無索引查詢有需求
-
myisam
-
-
memory不如使用非關系數據庫
-
-
引擎選擇
-
存儲引擎是針對表來說的,選擇什么樣的存儲引擎取決于表內數據的類型,一旦確定了存儲引擎并開始使用后,在修改存儲引擎會造成較大的麻煩。因此一定要結合需求來慎重決定存儲引擎。
-
-
myisam存儲引擎
-
文件
-
.frm 元數據(表結構)
-
.MYD 表數據
-
.MYI 表索引
-
-
-
表級鎖定
-
-
innodb存儲引擎
-
文件
-
.frm 表結構
-
.ibd 表數據與表索引
-
-
行級鎖定,外鍵約束
-
當用模糊查詢時還是會鎖定表 where沒有使用主鍵時。
-
-
優勢
-
能夠處理多并發的更新請求
-
事務型存儲引擎
-
自動災難恢復
-
支持外鍵
-
支持自增長設置
-
auto_increment
-
一般設置為自增長的列就適合作為主鍵索引,或者唯一索引。
-
-
-
-
修改存儲引擎的方法
-
方法一
-
alter table 表名 engine=引擎名;
-
-
方法二
-
修改配置文件/etc/my.cnf
-
default-storage-engine=引擎名稱
-
-
-
方法三
-
創建時指定
-
create table 表名(字段,。。。)values (值,。。。)engine=引擎名稱;
-
-
-
方法四
-
臨時修改,生效整個登錄過程
-
set default_storage_engine=引擎名稱
-
-
-
-
實驗比較
-
從多個因素比較myisam與innodb的差異
-
實驗準備
-
創建庫
-
create database auth
-
進入到該庫:use auth
-
-
創建表
-
create table tm(id int(20) primary key auto_increment,name char(30)) engine=myisam;
-
create table ti(id int(20) primary key auto_increment,name char(30)) engine=innodb;
-
將id列設為主鍵以及自動增長方便”存儲過程“的編寫。
-
-
創建存儲過程
-
修改數據庫結束符
-
delimiter $
-
-
創建存儲過程
-
create procedure insertm() begin set @i=1; while @i<=10000000 do insert into tm(name) values(concat("wy",@i)); set @i=@i+1; end while; end $
-
在創建第二個存儲過程只需要將上個存儲過程中的m修改為i即可表示時innodb的引擎。
-
-
最后修改回結束符
-
delimiter $
-
-
-
呼叫存儲過程
-
call insertm
-
call inserti
-
從這個過程中可以明顯的比較出兩者的差異,myisam時快的多。
-
-
使用無索引搜索
-
select * from tm where name>"wy100" and name <"wy10000000"
-
進行相關查詢后發現myisam在無索引搜索方面有優勢。
-
-
使用索引搜索
-
select * from tm where id>10 and id<999999;
-
在這方面inonodb有較大優勢
-
-
-
-
將上述全部復制,粘貼到xmind即可看到條理性筆記。?