MySQL优化之二--存储引擎
来源:互联网 发布:巨灵数据库 编辑:程序博客网 时间:2024/06/09 21:23
以下介绍几种最常见的存储引擎 MyISAM、innodb、CSV、Archive、Memory
注意:一个库中尽量不要混合使用多种存储引擎。使用Innodb已经能满足大多数使用情况要求。
MyISAM
1、并发性和锁级别
该存储引擎对于大量读的环境并发性比较不错,但是由于它的锁级别是表锁,所以大量写的并发性比较差。
2、支持全文索引和数据压缩
支持数据压缩(一般针对数据不会变动的表)myisampack。已压缩的表不能写操作,只能读。
3、限制
- Mysql版本 < 5.0时,默认表大小为4G,如果要存储大表,需要配置 MAX_Rows 和 AVG_ROW_LENGTH两个参数
- Mysql版本 >5.0时,支持256TB
4、适用场景
- 非事务型应用
- 只读类应用
- 空间类应用(如通过位置坐标计算出周围的超市)
Innodb
该存储引擎通过表空间存储数据,可以通过查看 innodb_file_per_table 参数来确定表空间适用方式:
- 值为 OFF:所有表的数据共享系统表空间,文件名为ibdataX(X代表数字)
- 值为 ON:每个表使用独立的表空间,文件名为TABLENAME.ibd
建议使用独立表空间:
1、系统表空间无法简单的收缩文件大小,不利于空间回收。独立表空间可使用optimize table命令收缩
2、系统表空间容易产生I/O瓶颈。独立表空间可以同时向多个文件刷新数据
把原来存在于系统表空间的表转移到独立表空间的方法:
1、使用mysqldump导出所有数据库表数据
2、停止Mysql服务,修改参数,并删除Innodb相关文件
3、重启Mysql,重建Innodb系统表空间
4、重新导入数据
innodb支持事务
存在两种日志:Redo Log(innodb_log_buffer_size配置,存储已提交的事务) 和 Undo Log(innodb_log_files_in_group配置,存储未提交的事务)
Innodb特性
1、支持行级锁
2、行级锁可以最大程度支持并发
3、行级锁是由存储引擎层实现的
4、Mysql版本>5.7, innodb支持全文索引和空间函数
两个概念
阻塞:多个事务之间排队延迟的现象
死锁:多个事务相互等待对方使用的资源,少量死锁系统会选择一个占用系统资源最少的进行回滚。大量死锁影响系统性能。
Innodb状态检查命令:show engine innodb status(Mysql版本不同,可能结果不同)
CSV
特征:
1、数据以文本的形式存放在文件中
2、.CSV文件存储表数据
3、.CSM文件存储表的元数据,如表状态和数据量
4、.frm文件存储表结构信息
5、所有列不能为NULL
6、不支持索引,不适合大表不适合在线处理
7、可以对数据文件直接进行编辑
使用场景:
适合数据交换的中间表
Archive
特征:
1、以zlib对表数据进行压缩,磁盘I/O更少
2、数据存储在ARZ为后缀的文件中
3、只支持insert和select操作
4、只允许在自增ID列上加索引
使用场景:
日志和数据采集类应用
Memory
特征:
1、支持HASH和BTree索引(等值查找用HASH,范围查找用BTree)
2、所有字段都为固定长度
3、不支持BLOG和TEXT大字段类型
4、使用表级锁
5、最大值由max_heap_table_size决定,默认16M,修改之后对已存在表无效,需要重建表
使用场景:
1、用于查找或者映射表,比如邮编和地区的对应表
2、用于保存数据分析中产生的中间表
3、用于缓存周期性聚合数据的结果表
Memory数据易丢失,所以要求数据可再生
- MySQL优化之二--存储引擎
- MySQL InnoDB存储引擎之表(二)
- (二) Mysql存储引擎
- mysql存储引擎(二)
- Mysql innodb存储引擎的性能优化二
- MYSQL性能优化之Mysql体系结构,存储引擎
- 【深入浅出Mysql】MySql存储引擎之MyISAM(二)
- MYSQL优化(二):索引优化、存储引擎优化、表结构优化等
- MySQL之存储引擎
- mysql之存储引擎
- MySql之存储引擎
- MySQL之存储引擎
- Mysql之存储引擎
- MySQL之存储引擎
- MYSQL之存储引擎
- MYSQL优化-存储引擎
- MySQL数据库性能优化之存储引擎选择
- MySQL数据库性能优化之存储引擎选择
- java序列化
- 解决Hadoop和Spark本地版本库不统一的问题
- hdu 1200
- Linux值得拥有的性能监控工具
- Android 设置闹钟的解决方案
- MySQL优化之二--存储引擎
- hdu2119 Matrix
- lua 语法
- 深度学习在搜狗无线搜索广告中的应用
- 老毛桃 是否好用
- Android adt v22.6.2 自动创建 appcompat_v7 解决方法,最低版本2.2也不会出现
- Interpolator定义动画变化率 如微博发动态
- c语言函数指针的作用
- Linux之find命令