您的位置:首页 > 数据库 > MySQL

MySQL_存储引擎介绍

2018-12-27 00:48 148 查看
版权声明:此文章为Myth_Ghost原创作品。禁止转载!!! https://blog.csdn.net/qq_37539022/article/details/85270971

此文章为Myth_Ghost原创作品。禁止转载!!!

MyISAM支持索引类型(系统表)

MyISAM表支持数据压缩

​ 如果数据写入表后,不需要更改,可以进行压缩操作。读取的时候可以逐行解压缩,不需要整个表解压。

myisampack -b -f xxxxx.MYI

压缩后不能进入写操作,只能读操作。

限制:

​ MySQL 5.0之前默认表大小为4G

​ 修改大表需要修改MAX_Rows和AVG_ROW_LENGTH。重新建表。

适用场景:

​ 非事务型应用

​ 数据仓库、报表

​ 只读类应用

​ 共享锁之间不会造成阻塞

​ 空间类应用

​ 支持空间函数

MySQL_Innodb优化

Innodb支持索引类型(支持在线热备)

Innodb使用表空间进行 数据存储

innodb_file_per_table

修改命令:

set global innodb_file_per_table = off;

on:独立表空间: tablename.ibd 为每一个表创建独立的表空间

​ 1.optimize table

​ 2.适合频繁写入

off:系统表空间: ibdataX

​ 1.磁盘碎片

​ 系统表空间不断增长,删除后不会释放空间。热备份方式:把所有数据库中Innodb表导出后,删除innodb相关的表空间文件后,再重启mysql服务器,进行表结构的重建,导入数据。

​ 2.不适合频繁写入

表转移的步骤

​ 1.使用mysqldump导出

​ 2.停止mysql服务,修改参数,删除innodb

​ 3.重启Mysql服务,重建innodb系统表空间

​ 4.重新导入数据

锁的类型

​ 共享锁(读锁)相互不会被阻塞

​ 独占锁(写锁)

锁的粒度

​ 表级锁 MySQL服务器实现

​ 行级锁 InnoDB实现

阻塞和死锁

​ 阻塞

​ 死锁 少量死锁系统可以自动处理

常用存储引擎

csv 文件系统存储

​ 数据以文本方式存储在文件中

特点:

  • 以CSV格式进行数据存储
  • 所有列必须不为NULL
  • 不支持索引 不适合大表,不适合在线处理
  • 可以对数据文件直接编辑
      保存文本内容

    适用场景:

    • 适合作为数据交换的中间表

    Archive存储引擎

    特点:

    • 以zilib对表数据进行压缩,磁盘I/O更少,占用空间小
    • 数据存储在ARZ为后缀的文件中
    • 只支持insert和select操作
    • 只允许在自增ID列增加索引

    适用场景:

    • 日志和数据采集类应用

    Memory存储引擎

    特点:

    • 也称为HEAP存储引擎,所以数据保存在内存中。表结构在硬盘中,数据(索引和数据)在内存中。
    • 支持HASH索引(适合等值查找)和BTree索引(适合范围查找)
    • 所有字段固定长度 varchar(10) = char(10)
    • 不支持BLOG和TEXT等大字段类型
    • 表级锁
    • 表的最大大小由max_heap_table_size参数决定。默认16MB,需要先设定

    易混淆概念:

    • Memory存储引擎表
    • 临时表(只对当前Session表可见) 系统使用临时表(内部临时表) 超过限制使用MyISAM临时表
    • 未超过限制使用Memory表
  • create temporary table 建立的临时表
  • 适用场景:(主Memory从Innodb数据库搭配使用时,主数据库重启,从数据库也会被重建。)

    • 用于查找或者是映射表,例如邮编地区的对应表
    • 用于保存数据分析中产生的中间表
    • 用于缓存周期性聚合数据的结果表

    Federated存储引擎(默认禁止)

    特点:

    • 提供了访问远程MySQL服务器上表的方法
    • 本地不存储数据,数据全部放到远程服务器上
    • 本地需要保存表结构和远程服务器的连接信息

    适用场景:

    • 偶尔的统计分析及手工查询
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: