手机版

MySQL存储引擎 - MySQL中文参考手册

2019-09-11 阅读 :

MySQL常用存储引擎

MySQL常用存储引擎之MyISAM

MySQL 5.5 之前版本默认存储引擎,在排序、分组等操作中,当数量超过一定大小之后,由查询优化器建立的临时表。

MyISAM 存储引擎表由 MYD (表数据) 、MYI (表索引) 与 frm (表结构) 组成。

MyISAM 特性

  • 并发性与锁级别

表级锁

  • 表损坏修复

check table tableNamerepair table tabelName
  • MyISAM 表支持的索引类型

fulltext

  • MyISAM表支持数据压缩

myisampack

压缩后的表无法进行写操作,只能进行读操作。

MyISAM限制

在 MySQL 版本小于 5.0 时,默认表大小为 4G,如存储大表则要修改表的 MAX_Rows 和 AVG_ROW_LENGTH 参数。

在MySQL版本大于5.0时,默认支持为 256TB。

MyISAM 适用场景

非事务型应用

只读类应用

空间类的应用

MySQL常用存储引擎之InnoDB

MySQL5.5 及之后版本默认存储引擎。

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

  • 如果数据库的配置参数 innodb_file_pre_table => on,那么创建后的 InnoDB 引擎的表将产生 tableName.frm 和 tableName.ibd 文件。

  • 如果数据库的配置参数 innodb_file_pre_table => off,那么创建后的  InnoDB 引擎的表将产生 ibdata*(共享表空间) 和 tableName.frm

那么,系统表空间和独立表空间要如何选择呢?

  • innodb_file_pre_table => off 建立的表情况下,系统表空间无法简单的收缩系统文件大小,造成大量的空间浪费,并且会产生大量的磁盘碎片,从而降低系统的性能。

  • 独立表空间可以通过 optimize table 命令收缩系统文件。

  • 系统表空间会产生IO瓶颈

  • 独立表空间可以同时向多个文件刷新数据

建议对 InnoDB 使用独立表空间,即 innodb_file_pre_table => on

InnoDB 特性

  • InnoDB 是一种事务性存储引擎

  • 完全支持事务的 ACID 特性

  • InnoDB 支持行级锁

行级锁可以最大程度的支持并发

行级锁是有存储引擎层实现

  • 锁的类型:

  • 共享锁(也称读锁)

  • 独占锁(也称写锁)

  • InnoDB 状态检查

show engine innodb status
  • 适用场景

InnoDB适用于大多数 OLTP 应用

MySQL常用存储引擎之CSV

文件系统存储特点

数据以文本方式存储在文件中,他们分别包含有如下文件:

.csv 文件存储表内容

.csm 文件存储标的元数据如表状态和数据量

.frm 文件存储表结构信息

CSV文件存储的特点
  • 以 csv 格式进行数据存储

  • 所有列必须都是不能为 null 的数据

  • 不支持索引

  • 可以对数据文件直接编辑

适用场景

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

MySQL常用存储引擎之Archive

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

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

Archive 文件存储特点

只支持 insert 和 select 操作

只允许在自增 ID 列上加索引

使用场景

日志和数据采集类应用

MySQL常用存储引擎之Memory

文件系统存储特点

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

功能特点

  • 支持 hash 索引(等值查找快)和 Btree 索引(范围查找快)

  • 所有字段都为固定长度,例如:varchar(10) = char(10)

  • 不支持 BLOB/TEXT 等大字段

  • Memory 存储引擎使用表级锁

  • 最大大小由 max_heap_table_size 参数决定

使用场景

  • 用于查找或者是映射表,例如:邮编和地区的对应表

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

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

Memory 数据易丢失,所以要求数据可再生。

MySQL常用存储引擎之Federated

默认禁止,启用需要在启动时增加 federated 参数。

mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name

功能特点

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

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

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


服务器软件 网络工具 网站工具 服务器教程 服务器知识 服务器技术 服务器之家 vps教程 vps是什么

本文标题:MySQL存储引擎 - MySQL中文参考手册 - 服务器教程_服务器技术_服务器知识_vps教程
本文地址:https://www.helloaliyun.com/tutorial/483.html

相关文章

  • CentOS 7 常用命令(系统关机、重启以及登出)

    关机:(系统的关机、重启以及登出 ) # 关闭系统(1)[root@localhost ~]# shutdown -h now # 关闭系统(2)[root@localhost ~]# init 0 # 关闭系统(3)[root@localhost ~]# telinit 0 # 按预定时间关闭系统[root@localhost...

    2019-12-07 服务器教程
  • linux重启命令 reboot与shutdown -r now的区别与联系

    在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告...

    2019-12-07 服务器教程
  • CentOS 7 如何使用命令重启或关机

    安装GNOME的朋友们首先切换到字符界面。切换到字符界面的方法如下: 先登陆进入系统,进入图形化界面,然后按Ctrl+Alt+F6(笔记本的是Ctrl+Alt+shift+Fn),进入字符界面。关机命令:shutdown或poweroffshutdown:shutdown -h now...

    2019-12-07 服务器教程
  • CentOS 7 正确关机重启的命令方法

    linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他...

    2019-12-07 服务器教程
  • CentOS下的yum upgrade和yum update区别,没事别乱用!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!!yum update: 升级所有包同时也升级软件和系统内核yum upgrade:只升级所有包,不升级软件和系统内核...

    2019-12-07 服务器教程
你可能感兴趣