MySQL存储引擎概述

文章介绍了MySQL5.7版本的重要性和常见存储引擎的特性,如InnoDB支持事务和行级锁,适合大数据量处理;MyISAM不支持事务,适合读取密集型场景;MEMORY引擎数据存储在内存中,适用于临时表或快速查询。
摘要由CSDN通过智能技术生成

       目前在web各大小企业使用的大部分是mysql5.7version,5.7相较于前版本比较有更好的性能提升,虽然2023年10月31日停止维护,但相较于后者(8+)有更大的使用基数,且我个人认为知识无所不通,升级迭代其思想不会颠覆,故针对5.7version进行记录。

-- 查看数据库版本
show version();

       可以使用 select version(); 查看数据库当前使用版本。

       在mysql中,有很多引擎,包括InnoDB、MRG_MYISAM、MEMORY、BLACKHOLE、MyISAM、CSV、ARCHIVE、PERFORMANCE_SCHEMA、FEDERATED等。之前听有人说起和面试者的回答,有部分人说有两种InnoDB和MyISAM,这固然是不对的,可能受部分没调研的文章影响,希望能甄别。

-- 查看支持的引擎
show engines;

       可以使用 show engines; 查看版本系统支持的引擎。

       就常用的三种引擎进行记录,InnoDB、MyISAM、MEMORY。

 1.InnoDB存储引擎

     InnDB是事务型数据库的引擎之一,也是首选引擎(提到事务,有人认为只有InnoDB支持事务,其实引擎支持事务不是特例,上文提到的BLACKHOLE黑洞引擎也支持事务),支持acid,支持事务的完整性,一致性。

      支持行级锁,行级锁可以在最大程度上支持并发。

      可以处理巨大数据量,与mysql服务器完全整合,在主内存中缓存数据和索引维持自己的缓冲池。

      有外键完整性的约束,在存储数据时,每张表都会按照主键顺序存放,如果建表时没有定义,InnoDB会给每一行生成一个6字节的rowId,并作为主键。

       可以进行数据修复,当服务崩溃时可以依靠其本身的redo log来保证恢复。

2.MyISAM存储引擎

     MyISAM不支持事务,当有事务要求时不能使用。

     MyISAM不支持行级锁,支持表级锁,锁的成本会变小,但是并发性能也严重缩水;写入时阻塞读取,读取时阻塞写入,都是读操作时,不会阻塞。

      该引擎通过key_buffer缓存索引,但是不会缓存数据。

3.MEMORY存储引擎

      这个引擎是比较特殊的引擎,在内存中创建表,所有的数据放在内存中,但是表结构作为文件存储在磁盘里,该文件的文件名与表名相同,类型为.frm类型。

      支持哈希(HASH)索引和 B+树索引,可以在创建索引时指定类型,默认使用哈希,速度较快。

      该引擎数据不安全,因其存在内存中,固突发异常情况会导致数据丢失,只剩下表结构。


       引擎是作为插件在MySQL存在,理论上是否使用都可以,但MySQL的架构决定了必须使用一种引擎。在实际工作中,绝大多数都会选择InnoDB作为数据存储引擎,因为其有完整的事务和并发控制。当处理低写入高读取且无事务的场景可以用MyISAM,无事务不需要保证数据安全且数据量不大时可以考虑使用MEMORY。引擎之间没有三九流之分,其存之必有其意,合理地使用引擎,可助长之。

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值