滕州网站优化宁波创建网站
news/
2025/9/22 23:53:04/
文章来源:
滕州网站优化,宁波创建网站,海城seo网站排名优化推广,山西并州建设有限公司一、存储引擎概念介绍
MySQL中的数据用各种不同的技术存储在文件中#xff0c;每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力#xff0c;这些不同的技术以及配套的功能在MySQL中称为存储引擎 存储引擎是MySQL将数据存储在文件系统中的存储…一、存储引擎概念介绍
MySQL中的数据用各种不同的技术存储在文件中每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力这些不同的技术以及配套的功能在MySQL中称为存储引擎 存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式
定义是mysql数据库的组件负责执行实际的数据I/O操作数据的存储和提取工作在文件系统之上数据库的数据会先传到存储引擎再按照存储引擎的格式保存到文件系统。
MySQL常用的存储引擎
1、MyISAM 2、InnoDB
架构 MYISAM介绍 MyISAM不支持事务也不支持外键约束只支持全文索引数据文件和索引文件是分开保存的
访问速度快对事务完整性没有要求 MyISAM 适合查询、插入为主的应用场景
MyISAM在磁盘上存储成三个文件文件名和表名都相同但是扩展名分别为.frm 文件存储表结构的定义 数据文件的扩展名为 .MYD (MYData) 索引文件的扩展名是 .MYI (MYIndex) mylsam特点
表级锁定形式数据在更新时锁定整个表 数据库在读写过程中相互阻塞: ————》串行操作按照顺序操作每次在读或写的时候会把全表锁起来 会在数据写入的过程阻塞用户数据的读取 也会在数据读取的过程中阻塞用户的数据写入 特性数据单独写入或读取速度过程较快且占用资源相对少
MyISAM 表支持 3 种不同的存储格式 1静态(固定长度)表 静态表是默认的存储格式。静态表中的字段都是非可变字段这样每个记录都是固定长度的这种存储方式的优点是存储非常迅速容易缓存出现故障容易恢复缺点是占用的空间通常比动态表多。 固定长度10 存储非常迅速容器缓存故障之后容易恢复 id5 char(10) 000000001 2动态表 动态表包含可变字段varchar记录不是固定长度的这样存储的优点是占用空间较少但是频繁的更新、删除记录会产生碎片需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命令来改善性能并且出现故障的时候恢复相对比较困难。 3压缩表 压缩表由 myisamchk 工具创建占据非常小的空间因为每条记录都是被单独压缩的所以只有非常小的访问开支 MyISAM适用的生产场景
公司业务不需要事务的支持 单方面读取或写入数据比较多的业务 MyISAM存储引擎数据读写都比较频繁场景不适合 使用读写并发访问相对较低的业务 数据修改相对较少的业务 对数据业务一致性要求不是非常高的业务 服务器硬件资源相对比较差
MyIsam适合于单方向的任务场景、同时并发量不高、对于事务要求不高的场景
InnoDB
支持事务支持4个事务隔离级别数据不一致问题 MySQL从5.5.5版本开始默认的存储引擎为 InnoDB 5.5 之前是myisam isam 默认 读写阻塞与事务隔离级别相关 能非常高效的缓存索引和数据 表与主键以簇的方式存储 支持分区、表空间类似oracle数据库5.5 ——》5.6 和5.7 第三代数据库8.0后版本 支持外键约束5.5前不支持全文索引5.5后支持全文索引 对硬件资源要求还是比较高的场合 行级锁定但是全表扫描仍然会是表级锁定select 如 update table set a1 where user like ‘%lic%’;模糊查询时会全表锁定 InnoDB 中不保存表的行数如 select count(*) from table; 时InnoDB 需要扫描一遍整个表来计算有多少行但是 MyISAM 只要简单的读出保存好的行数即可。需要注意的是当 count(*)语句包含 where 条件时 MyISAM 也需要扫描整个表 对于自增长的字段InnoDB 中必须包含只有该字段的索引 但是在 MyISAM 表中可以和其他字段一起建立组合索引 清空整个表时InnoDB 是一行一行的删除效率非常慢。MyISAM 则会重建表truncate 企业选择存储引擎依据 业务场景如果并发量大什么并发量大读写的并发量大那我们建议使用innoDB 如果单独的写入或是插入单独的查询那我们建议使用没有INNODB 表级锁开销小加锁快不会出现死锁锁定粒度大发生锁冲突的概率最高并发度最低 行级锁开销大加锁慢会出现死锁锁定粒度最小发生锁冲突的概率最低并发度也最高 MyISAM不支持事务也不支持外键约束只支持全文索引数据文件和索引文件是分开保存的 需要考虑每个存储引擎提供了哪些不同的核心功能及应用场景 索引的支持
•建立索引在搜索和恢复数据库中的数据时能显著提高性能 •不同的存储引擎提供不同的制作索引的技术 •有些存储引擎根本不支持索引
事务处理的支持
•提高在向表中更新和插入信息期间的可靠性 •可根据企业业务是否要支持事务选择存储引擎 innodb 如何查看存储引擎 三种方式
1.
show create table 表名;2.在没有进入库里面
show table status from 库名 where name表名\G;3.已经进入库的查看
show table status where nameaccount\G; 查看当前数据库所支持的引擎 修改存储引擎 1.对于已经存在的表i设置已经建立数据的存储引擎
alter table 表名 engine存储引擎; account是myisam存储引擎frm表结构 myd数据文件 myI:索引文件 2.设置新建的存储引擎 随后再进入数据库 新建表在不指定存储引擎时都是文件默认修改的myisam格式之后查看存储引擎格式 如果已经修改过配置文件里面的存储引擎但是新建表时 指定存储引擎格式则存储引擎根据指定的格式要求来
如上图已经在my.cnf的配置文件中修改的存储引擎为myisam现重新创建一个表 存储引擎总结 MyISAM和InnoDB的区别 InnoDB支持事务MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务自动提交这样会影响速度所以最好把多条SQL语言放在begin和commit之间组成一个事务 InnoDB支持外键而MyISAM不支持。 InnoDB是聚集索引使用BTree作为索引结构数据文件是和主键索引绑在一起的表数据文件本身就是按BTree组织的一个索引结构必须要有主键通过主键索引效率很高。MyISAM是非聚集索引也是使用BTree作为索引结构索引和数据文件是分离的索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 InnoDB不保存表的具体行数执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数执行上述语句时只需要读出该变量即可速度很快。 Innodb不支持全文索引而MyISAM支持全文索引查询效率上MyISAM要高5.7以后的InnoDB支持全文索引了。 InnoDB支持表、行级锁(默认)而MyISAM支持表级锁。 InnoDB表必须有主键用户没有指定的话会自己找或生产一个主键而Myisam可以没有。 Innodb存储文件有frm、ibd而Myisam是frm、MYD、MYI。 Innodbfrm是表定义文件ibd是数据文件。 Myisamfrm是表定义文件myd是数据文件myi是索引文件。 InnoDB行锁与索引的关系 第一步 查看存储引擎格式 必须为innodb 第二步 将id 改为主键 将name 改成普通索引 主键测试 但是 id2 ..其他的都可以修改因为这边只命令了id1就锁定了id1这行 其他的行 没有被锁定
普通索引测试 没有索引的情况下测试 死锁现象 避免死锁产生
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910797.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!