美文网首页
mysql优化策略

mysql优化策略

作者: code_nerd | 来源:发表于2017-10-27 09:46 被阅读0次

    mysql优化的几个方面

    • 硬件 主要有 cpu、内存、磁盘io、网络
    • 系统配置 操作系统的不同、版本、以及操作系统的配置
    • 数据库 存储引擎的选择、数据库服务器配置参数、
    • 表结构设计及sql语句 sql语句优化、编写、表结构的设计

    硬件

    cpu选择

    应用为计算密集型,应该使用更高的频率
    应用的并发量高,则需要更多的核数

    内存

    • 一般来说通过增加内存,将数据缓存到内存中,从而提高数据吞吐性能
      瓶颈,如所有的数据都缓存到内存中了,在增加内存不会有性能的提升
      myisam 会将索引缓存到内存中
      数据通过操作系统缓存
      innodb 会同时在内存中缓存数据和索引

    • 内存的提升对于写会有提升,可以将多次写入改为一次写入

    • 内存的频率越高,速度越快

    磁盘的配置和选择

    • 传统机械磁盘

    读取过程:1)移动磁头到磁盘表面正确的位置上,2)等待磁盘旋转,使所需的数据在磁头之下,3)等待磁盘旋转过去,所有所需的数据被磁头读出
    12称为访问时间,3传输速度

    选择因素:磁盘容量,传输速度,访问时间,主轴转速,物理尺寸

    • raid机械磁盘 磁盘冗余队列的简称

    • ssd
      相比机械磁盘,可以加强随机读写性能,随机读的性能提升明显
      支持的更好的并发
      长时间密集写操作容易损坏ssd

    • 网络存储
      外部文件存储设备加载到服务器上的方法
      最适合用于数据库备份

    系统

    mysql适合的操作系统
    windows、FreeBSD、Solaris、linux

    • centos优化
      linux优化
    • 插件式存储引擎 存储引擎针对于表,而不是针对于库的


    存储引擎

    myisam

    myisam存储引擎由MYD和MYI组成

    特性

    • 并发性和锁级别 使用的是表级锁,读写混合操作并发差,
    • 表损坏修复 check table tablename 进行检查, repair table tablename 进行修复
    • 支持的索引类型 全文索引,
    • 支持数据压缩 myisampack命令压缩 已压缩的表只能进行读操作

    限制

    • mysql5.0之前默认表大小为4g,5.0之后支持256tb

    适用场景

    • 非事务应用
    • 只读类应用
    • 空间类应用

    innodb

    mysql5.5版本之后称为默认存储引擎
    适合处理大量小事务
    innodb使用表空间进行数据存储
    innodb_file_per_tabl
    on 独立表空间:tablename.ibd; 通过optimize table命令收缩系统文件,可以同时向多个文件刷新数据
    off 系统表空间 ibdatax 无法简单收缩文件大小,会产生io瓶颈
    将系统表空间转到独立表空间,1mysqldump导出,2停止mysql服务,修改参数,3重启mysql,重建innodb表空间,4重新导入

    特性

    • innodb 是一种事务型存储引擎
    • 完全支持事务的acid特性
    • redo log 和 undo log redo log 实现事务持久性,undo log 未提交事务
    • innodb 支持行级锁,行级锁可以最大程度支持并发,行级锁是由存储引擎实现的

    性能监控命令

    show engine innodb status

    锁的概念

    锁的主要作用是管理共享资源的并发访问
    锁用于实现事务的隔离性
    锁的类型:读锁(共享的,不相互干扰),写锁(排他的,堵塞其他读锁和写锁)
    锁的粒度:被加锁资源的最小单位,行级锁,表级锁,锁定的数据越少,并发越高
    阻塞:不同锁之间的兼容,一个锁需要等待另一个锁的释放,因而产生了阻塞,阻塞是为了确保事务的可以并发。大量慢查询或者是alter table
    死锁:两个或者两个以上事务,相互占用对方等待的资源。系统会自动处理。少量死锁不会对系统发生影响。

    CSV

    文件系统存储特点:

    • 以文件方式存储
    • 所有的列 都是非空的
    • 不支持索引
    • 不适合大表 不适合在线处理
    • 可以直接对文件进行编辑

    适用场景,作为数据交换的中间表使用

    • .csv 文件存储表内容
    • .csm 文件存储表的元数据和数量数
    • .frm 文件存储表结构信息

    archive

    文件系统存储特点

    • 以zlib对表数据进行压缩,磁盘io更少
    • 数据存储在ARZ为后缀的文件中
    • frm 存储表结构

    存储特点

    • 只支持insert 和 select
    • 支持在自增id 上建立索引
    • 记录日志和数据采集类应用

    memory

    文件系统存储特点

    • 也称为heap存储引擎,所以所有数据存储在内存中
    • 重启数据消失 需要数据是可再生的
    • 表结构 存储在ifm

    功能特点

    • 支持hash 等值查找
    • btree索引 范围查找
    • 所有字段的长度都是定长的,varchar(10). => char(10)
    • 不支持 text blog 大字段类型
    • 使用的是表级锁
    • 最大大小由 max_heap_table_size. 默认16mb 修改之后需要重建已存在的表

    临时表

    • 系统使用的(未超过限制使用momery临时表, 超过限制 使用myisam 临时表)
    • create temporary table 建立的临时表

    相关文章

      网友评论

          本文标题:mysql优化策略

          本文链接:https://www.haomeiwen.com/subject/kxhrpxtx.html