mysql的学习(一)之mysql性能的影响因素
硬件配置
- cpu,可使用内存myIsam会把索引缓存到内存中,数据交给操作系统,而innodb会在内存中存储索引和数据
- 硬盘固态存储和PCIe卡
- 网络存储SAN和NAS
mysql体系结构
特点:插件式存储引擎,可针对每个表配置
myISAM 存储引擎
5.5版本之前的默认。MyISAM存储引擎表由MYD(存储数据)和MYI(存储索引)组成。
特性:
- 使用表级别锁
- 表的检查与修复,check table tablename /repair table tablename
- 支持数据压缩(myisampack)和全文索引。压缩后的表只能读不能写。
适用场景:
- 非事务型应用
- 只读类应用
Innodb存储引擎
5.5版本之后的默认。使用表空间进行数据存储。innodb_file_per_table on:独立表空间tablename.ibd off:系统表空间ibdataX
独立表空间可以通过optimize table命令收缩系统文件
特性:
- 支持事务的ACID
- 支持行级别锁,存储引擎实现的
- redo log 和 undo log
CSV存储引擎
数据以文本方式存储在文件中。.csv文件存储表内容。.csm文件存储表的元数据如表状态和数据量。
特性:
- 所有列必须都是不能为null
- 不支持索引,可以对数据文件直接进行编辑
使用场景:作为数据中间表
Archive存储引擎
以zlib对表数据进行压缩磁盘io更少。数据存储在ARZ文件中
特性:
- 只支持insert和select
- 只允许在自增id上建立索引
使用场景:日志和数据采集类应用
Memory存储引擎
也称为HEAP存储引擎。数据存在内存中。表数据丢失但是表结构不会丢失。
特性:
- 支持hash(等值查找)索引和btree(范围查找)索引
- 所有字段都为固定长度varchar10=char10
- 不支持BLOG和TEXT等大字段
- 使用表级别锁
使用场景:用于查找或者是映射表,用于保存数据分析中产生的中间表。用于缓存周期性聚合函数的结果表。用于数据容易丢失可再生。
如何选择正确的存储引擎
- 事务
- 在线备份
- 崩溃恢复
- 存储引擎的特有属性
mysql服务器参数
查看使用配置文件的顺序
mysqld --help --verbose | grep -A 1'default options '