首页 > 数据库 >MySQL存储引擎

MySQL存储引擎

时间:2023-10-22 16:05:29浏览次数:42  
标签:存储 并发 事务 索引 引擎 InnoDB MyISAM MySQL

show engines; 查看支持的存储引擎。

mysql表的存储引擎:

InnoDB myISAM Memory MRG_MYISAM archive federated,CSV,BLACKHOLE

1、InnoDB

支持事务和外键:

InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能

全文索引 不支持

锁 InnoDB支持行级锁,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,注意间隙锁的影响

存储: InnoDB,基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小

索引: InnoDB(索引组织表)使用的聚簇索引、索引就是数据,顺序存储,因此能缓存索引,也能缓存数据

并发: InnoDB 读写阻塞与事务隔离级别相关

什么时候选择InnoDB(是建表的默认选择)?

需要事务支持(具有较好的事务特性)

行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成

数据更新较为频繁的场景

数据一致性要求较高

硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘 IO

MySQL存储引擎_InnoDB

.frm 文件存储的是数据表的表结构信息

.ibd 存储的是数据表的索引信息及数据

2、MYISAM

事务和外键: 不支持事务和外键 MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择

全文索引: 支持

锁: MyISAM支持表级锁定,提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)

存储: MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型, .frm文件存储表定义,数据文件的扩展名为.MYD, 索引文件的扩展名是.MYI

MySQL存储引擎_MYISAM_02

索引: MyISAM(堆组织表)使用的是非聚簇索引、索引和文件分开,随机存储,只能缓存索引

并发: MyISAM读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读

场景选择?

1、不需要事务支持(不支持)

2、并发相对较低(锁定机制问题)

3、数据修改相对较少(阻塞问题),以读为主

4、数据一致性要求不是非常高

标签:存储,并发,事务,索引,引擎,InnoDB,MyISAM,MySQL
From: https://blog.51cto.com/u_16261728/7976820

相关文章

  • mysql8解决null, message from server: “Host is not allowed to connect to this My
    1.登录mysql(注意:账号密码不包括,-u和-p)mysql-uroot-proot2.切换到mysql库:usemysql;3.查询root用户的host值:selectuser,hostfromuser;如果host的值是localhost,说明只支持本地连接,不能远程登录。4.更改host的值为%:updateusersethost='%'whereuser='root';5.刷......
  • MySQL中有哪几种锁,列举一下;意向锁是什么?
    一、MySQL中有哪几种锁如果按锁粒度划分,有以下3种:表锁:开销小,加锁快;锁定力度大,发生锁冲突概率高,并发度最低;不会出现死锁。行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。页锁:开销和加锁速度介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度......
  • Discord 存储迁移之路
    从MongoDB到Cassandra开始选择新的存储(Cassandra)进行数据迁移,他们认为Cassndra是当时(2015年底)唯一能满足他们要求的数据库(后面也打脸了)。他们对数据库的要求如下:线性可扩展性——不需要手动进行数据的分片自动故障转移——尽可能的进行自我修复维护成本低——设置好后就......
  • oracle使用dblink连接mysql
    在oracle数据库访问mysql数据库数据环境Oracle 数据库:192.168.22.6端口1521操作系统:RHEL7.6MYSQL数据库:192.168.22.9端口3306操作系统:RHEL7.6 用户:lanmc,密码:lanmc123,数据库lanmcORACLE数据库配置1、oracle服务端安装mysqlodbcmysqlodbc下载地址:https://dev.mysql......
  • Mysql死亡笔记的死锁记录
    死锁记录线上MySQL死锁了,我赶紧登录线上系统,查看业务日志。能清楚看到是这条insert语句发生了死锁。MySQL如果检测到两个事务发生了死锁,会回滚其中一个事务,让另一个事务执行成功。很明显,我们这条insert语句被回滚了。insertintouser(id,name,age)values(6,'张三',6);但是......
  • 什么是MySQL索引下推优化
    索引条件下推优化(IndexConditionPushdown(ICP))是MySQL5.6添加的,用于优化数据查询。不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQLServer,MySQLServer进行过滤条件的判断。当使用索引条件下推优化时,如果存在某些被索引的列的判断条件时,MySQLServer将......
  • php js + laravel + mysql开发的手术麻醉临床信息系统源码
    手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生成麻醉的各种医疗文书,完成共享HIS、LIS、PACS和EMR等手术患者信息,从而提......
  • 存储管理
    一、概述1.1地址映射(地址重定位)  内存中每个存储单元都有一个编号,这个编号称为内存地址(物理地址、绝对地址)。内存地址的集合称为内存空间(物理地址空间)。  用户编程所用的地址称为逻辑地址(程序地址、虚地址),由逻辑地址组成的空间称为逻辑地址空间。  地址映射:把用户程序......
  • Mysql一文流
    一文读懂MySQL数据库1.MySQL简介1.1数据库介绍​数据库(Database,DB)从本质上讲就是一个文件系统,它能够讲数据有组织地集合砸一起,按照一定的规则长期存储到计算机的磁盘中,并且能够供多个用户共享和使用,同时,用户能够对数据库中的数据进行插入、删除、修改和查询操作​......
  • MySql安装与使用
    mysql是目前最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。MySQL是非常灵活的一款数据库,虽然它不是绝对完美,但它的灵活足够适应很多高要求的环境。为了发挥MySQL的性能并很好的使用它,我......