1. 儲存引擎
#看你的mysql現在已提供什麼儲存引擎:
mysql> show engines;
#看你的mysql當前預設的儲存引擎:
mysql> show variables like '%storage_engine%';
1.1. myisam
mysql 5.5之前預設的儲存引擎
myisam 儲存引擎由myd和myi組成
create table testmysam (
id int primary key
) engine=myisam
insert into testmysam values(1),(2),(3)
1.1.1. 表壓縮
myisampack -b -f /usr/local/mysql/data/mall/testmysam.myi
壓縮後再往表裡面新增資料就新增不了
insert into testmysam values(1),(2),(3)
壓縮後,需要
myisamchk -r -f /usr/local/mysql/data/mall/testmysam.myi
1.1.2. 適用場景:
l 非事務型應用(資料倉儲,報表,日誌資料)
l 唯讀類應用
l 空間類應用(空間函式,座標)
由於現在innodb越來越強大,myisam已經停止維護
(絕大多數場景都不適合)
1.2. innodb
l innodb是一種事務性儲存引擎
l 完全支援事務得acid特性
l redo log 和undo log
l innodb支援行級鎖(併發程度更高)
l 以csv格式進行資料儲存
l 所有列都不能為null的
create table mycsv(id int not null,c1 varchar(10) not null,c2 char(10) not null) engine=csv;
insert into mycsv values(1,'aaa','bbb'),(2,'cccc','dddd');
vi /usr/local/mysql/data/mall/mycsv.csv 修改文字資料
flush tables;
select * from mycsv
create index idx_id on mycsv(id)
1.4. archive
l 組成
以zlib對錶資料進行壓縮,磁碟i/o更少
資料儲存在arz為字尾的檔案中
l 特點:
只支援insert和select操作
只允許在自增id列上加索引
create table myarchive(id int auto_increment not null,c1 varchar(10),c2 char(10), key(id)) engine = archive;
create index idx_c1 on myarchive(c1)
insert into myarchive(c1,c2) value('aa','bb'),('cc','dd');
delete from myarchive where id = 1
update myarchive set c1='aaa' where id = 1
1.5. memory
1.5.1. 特點
l 檔案系統儲存特點
也稱heap儲存引擎,所以資料儲存在記憶體中
l 支援hash索引和btree索引
l 所有欄位都是固定長度 varchar(10) = char(10)
l 不支援blog和text等大字段
l memory儲存引擎使用表級鎖
l 最大大小由max_heap_table_size引數決定
show variables like 'max_heap_table_size'
create table mymemory(id int,c1 varchar(10),c2 char(10),c3 text) engine = memory;
create table mymemory(id int,c1 varchar(10),c2 char(10)) engine = memory;
create index idx_c1 on mymemory(c1);
create index idx_c2 using btree on mymemory(c2);
show index from mymemory
show table status like 『mymemory』
1.5.2. 與臨時表的區別
1.5.3. 使用場景
l hash索引用於查詢或者是對映表(郵編和地區的對應表)
l 用於儲存資料分析中產生的中間表
l 用於快取週期性聚合資料的結果表
6.6. ferderated
l 提供了訪問遠端mysql伺服器上表的方法
l 本地不儲存資料,資料全部放到遠端伺服器上
l 本地需要儲存表結構和遠端伺服器的連線資訊
使用場景
偶爾的統計分析及手工查詢(某些遊戲行業)
預設禁止,啟用需要再啟動時增加federated引數
show engines
create database local;
create database remote;
create table remote_fed(id int auto_increment not null,c1 varchar(10) not null default '',c2 char(10) not null default '',primary key(id)) engine = innodb
insert into remote_fed(c1,c2) values('aaa','bbb'),('ccc','ddd'),('eee','fff');
create table `local_fed` (
`id` int(11) not null auto_increment,
`c1` varchar(10) not null default '',
`c2` char(10) not null default '',
primary key (`id`)
) engine=federated connection ='mysql://root:root1234%@127.0.0.1:3306/remote/remote_fed'
select * from local_fed
delete from local_fed where id = 2
select * from remote.remote_fed
mysql儲存引擎 mysql儲存引擎簡介
精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...
mysql個儲存引擎 MySQL儲存引擎
mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...
mysql儲存引擎模式 mysql儲存引擎
mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 一 儲存引擎 儲存引擎 其實就是指定 表 如何儲存資料,如何為儲存的資料 建立索引以及 如何更新,查...