• MySQL存储引擎


    1. 存储引擎

    #看你的mysql现在已提供什么存储引擎:

      mysql> show engines;

      

     #看你的mysql当前默认的存储引擎:

     mysql> show variables like '%storage_engine%';

    1.1. MyISAM

    MySql 5.5之前默认的存储引擎

    MyISAM 存储引擎由MYDMYI组成

    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. 适用场景:

    非事务型应用(数据仓库,报表,日志数据)

    只读类应用

    空间类应用(空间函数,坐标)

    由于现在innodb越来越强大,myisam已经停止维护

    (绝大多数场景都不适合)

     

    1.2. Innodb

    l  Innodb是一种事务性存储引擎

    l  完全支持事务得ACID特性

    l  Redo Log Undo Log

    l Innodb支持行级锁(并发程度更高)

     

    show VARIABLES like 'innodb_log_buffer_size'  

    1.3. CSV

    csv格式进行数据存储

    所有列都不能为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

    组成

      zlib对表数据进行压缩,磁盘I/O更少

      数据存储在ARZ为后缀的文件中

    特点:

        只支持insertselect操作

      只允许在自增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. 特点

    文件系统存储特点

        也称HEAP存储引擎,所以数据保存在内存中

    支持HASH索引和BTree索引

    所有字段都是固定长度 varchar(10) = char(10)

    不支持BlogText等大字段

    l Memory存储引擎使用表级锁

    最大大小由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索引用于查找或者是映射表(邮编和地区的对应表)

    用于保存数据分析中产生的中间表

    用于缓存周期性聚合数据的结果表

    6.6. Ferderated

    提供了访问远程MySQL服务器上表的方法

    本地不存储数据,数据全部放到远程服务器上

    本地需要保存表结构和远程服务器的连接信息

    使用场景

        偶尔的统计分析及手工查询(某些游戏行业)

    默认禁止,启用需要再启动时增加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

  • 相关阅读:
    1337:【例3-2】单词查找树
    1336:【例3-1】找树根和孩子
    1301:大盗阿福
    CSP-J/S 第一轮知识点选讲
    【转】C++STL各容器的操作及复杂度
    如何查看SUSE的版本信息
    野人和传教士过河问题的C语言源代码
    ubuntu如何安装软件
    Heavy Transportation POJ
    Heavy Transportation POJ
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/11050463.html
Copyright © 2020-2023  润新知