mysql 儲存引擎 唯讀 MySQL儲存引擎

2021-10-18 10:12:25 字數 3567 閱讀 4248

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介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 一 儲存引擎 儲存引擎 其實就是指定 表 如何儲存資料,如何為儲存的資料 建立索引以及 如何更新,查...