资讯专栏INFORMATION COLUMN

mysql存储引擎

callmewhy / 1178人阅读

摘要:存储格式数据索引结构分别存储于不同的文件中结构数据索引数据的存储顺序为,按插入顺序排列特定功能全文索引支持。支持数据压缩存储。

查看mysql支持的存储引擎列表
mysql> show enginesG;
*************************** 1. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
..........
..........
Innodb(事务安全型的存储引擎,更加注重数据的完整性和安全性)

>= 5.5 默认的存储引擎,mysql推荐使用的存储引擎
特点:提供事务,行级锁定,外键约束支持的存储引擎

存储格式

数据,索引集中存储,都存储与同一个表空间文件
数据=记录行
索引=检索机制,也需要占用一定空间

.frm文件,表结构文件
innodb_xxx_.frm

默认情况下,mysql中所有的数据行,全部存储在innodb表的表空间文件中
innode,表空间内容(数据和索引)

通过设置临时设置innodb_file_per_table = 1设置为,每张表都为一个innodb表空间文件
>= set global innodb_file_per_table = 1
设置完成后,新建一张表,生成如下两个文件
innodb_1.frm 单表结构文件
innodb_1.ibd 单表空间文件

数据按照主键顺序存储

在一张主键ID自增的表中,随意设置主键列值,查询时得出的结果是经过mysql排序的
也就是说,mysql在插入的时候会做排序工作,把表中数据先主键排序后再插入,效率低

特定功能

下面两个功能都是维数数据完整性
事务:
外键约束:php开发人员,需要自己去实现外键约束功能,例如,删除一个分类,php开发人员自己先去查询,该分类下是否存在子分类功能

并发处理

innodb擅长处理并发,因为如下功能支持
行级锁定:row-level locking , 某些情况下,使用行级锁定,提高并发性,也支持表级锁定,innodb自己可以操作,无需人为参与
多版本并发控制:mvcc,效果几乎达到无阻塞读操作,写操作的时候,写副本,原始版本供其他客户端读


读锁:读操作时增加锁,叫共享锁,S-lock特征是阻塞其他客户端的写操作,不阻塞读操作
写锁:写操作时增加锁,叫独占锁或排他锁,X-lock特征是阻塞其他客户端的读、写操作

锁定粒度(范围)
行级:提升并发性,锁定开销大
表级:不利于并发性,锁定开销小

myisam

<= 5.5 mysql默认的存储引擎
isam:Indexed Sequential Access Method(索引顺序存取方法)的缩写 ,是一种文件系统
特点:擅长处理些,高速读与写。

存储格式

数据、索引、结构分别存储于不同的文件中
myisam_xxx.frm 结构
myisam_xxx.MYD 数据
myisam_xxx.MYI 索引

数据的存储顺序为,按插入顺序排列

特定功能

全文索引支持。(>= 5.6 innodb支持)
数据压缩存储。.MYD文件的压缩存储。
压缩前

压缩:使用工具myisampack完成压缩功能,在bin目中
压缩后(由于我的win平台的mysql的bin目录没有这个工具,暂先文字描述),压缩一半以上,MYD会被压缩,MYI不会被压缩,节省磁盘空间,减少I/O开销
注意,压缩后,表只能读,不能写,要写的话,需要重新恢复。
如果需要更新,需要解压后更新,再压缩(重新索引)
利用工具解压缩:myisamchk -unpack 表名
再执行刷新表:flush table 表名

并发性
只支持表级锁定
支持并发插入,写操作中的插入操作,不会阻塞读操作

myisam
innodb:数据完整性,并发性处理,擅长更新,删除
myisam:高速查询及插入。擅长插入,查询

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/46534.html

相关文章

  • MySQL性能调优与架构设计(二)—— MySQL存储引擎简介

    摘要:的插件式存储引擎主要包括等。和在严格意义来说,并不能算作一个存储引擎。实现外键实现了外键引用这一数据库的重要特性,使在数据库端控制部分数据的完整性成为可能。 什么是存储引擎 mysql中的数据用各种不同的技术存储在文件(或者内存)中。 这些技术中每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。 通过选择不同的技术,你能够获得额外的速度和功能,从而...

    muzhuyu 评论0 收藏0
  • 译-存储引擎的选择

    摘要:是目前默认的也是最通用的存储引擎。的是事务安全兼容存储引擎,具有提交,回滚和崩溃恢复功能来保护用户数据。也称为该集群数据库引擎是特别适合于那些需要运行时间和可用性的最高程度的应用。选择一个存储引擎多种多样的存储引擎是为了不同的情况所设计的。 Chapter 16 Alternative Storage Engines转自我的github,github优先更新~欢迎star~ 存储引擎是...

    Shihira 评论0 收藏0
  • 搞定PHP面试 - MySQL基础知识点整理 - 存储引擎

    摘要:支持崩溃后的安全恢复。的使用场景更新密集的表存储引擎特别适合处理多重并发的更新请求。外键约束支持外键的存储引擎只有。引擎是及之前版本的默认存储引擎。文件存储表的索引。引擎存储引擎是引擎的变种。 MySQL基础知识点整理 - 存储引擎 0. 查看 MySQL 支持的存储引擎 可以在 mysql 客户端中,使用 show engines; 命令可以查看MySQL支持的引擎: mysql> ...

    lmxdawn 评论0 收藏0
  • 搞定PHP面试 - MySQL基础知识点整理 - 存储引擎

    摘要:支持崩溃后的安全恢复。的使用场景更新密集的表存储引擎特别适合处理多重并发的更新请求。外键约束支持外键的存储引擎只有。引擎是及之前版本的默认存储引擎。文件存储表的索引。引擎存储引擎是引擎的变种。 MySQL基础知识点整理 - 存储引擎 0. 查看 MySQL 支持的存储引擎 可以在 mysql 客户端中,使用 show engines; 命令可以查看MySQL支持的引擎: mysql> ...

    whatsns 评论0 收藏0
  • MySQL - 常见的三种存储引擎

    摘要:的核心就是插件式存储引擎。列的值表示某种引擎是否能使用表示可以使用表示不能使用表示该引擎为当前默认的存储引擎。主要特性为提供了具有提交回滚和崩溃恢复能力的事物安全兼容存储引擎。它是在数据仓储和其他应用环境下最常使用的存储引擎之一。 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水...

    Pocher 评论0 收藏0
  • MySQL数据库系统

    摘要:四概述是一个开源的关系型数据库管理系统,由瑞典公司开发,目前属于旗下产品。是最流行的关系型数据库管理系统之一,在应用方面,是最好的,关系数据库管理系统应用软件。支持大型的数据库。 一、数据库概述 数据库就是一个运行在系统上的软件,用于存储用户个人信息、用户的游戏资料等; 数据库是多个表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据 数据库由多个表组成,多个数据记录组成...

    ACb0y 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<