mysql的学习(一)之mysql性能的影响因素

硬件配置

  • cpu,可使用内存myIsam会把索引缓存到内存中,数据交给操作系统,而innodb会在内存中存储索引和数据
  • 硬盘固态存储和PCIe卡
  • 网络存储SAN和NAS

mysql体系结构

特点:插件式存储引擎,可针对每个表配置

mysql的学习(一)之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 '

mysql的学习(一)之mysql性能的影响因素