美文网首页
MySQL数据库优化

MySQL数据库优化

作者: 史啸天 | 来源:发表于2019-12-10 14:08 被阅读0次

概述

    关于数据库的优化有很多种方式,今天我们为大家介绍一下数据库的一些自优化策略,通过一些简单的命令来开启数据库本身的优化,这些优化项在面试中,大家也可以拿来炫耀一下啦。

存储引擎

    MySQL有很多种存储引擎,在不同的存储引擎中优化策略有所不同,在MySQL5.5.8版本开始默认是InnoDB存储引擎,在之前默认是MyISAM存储引擎;当然面对不同的业务需求,选择最适合的存储引擎,是MySQL最大的优化策略之一。

mysql>SHOW ENGINES

    通过上述语句可以查看当前使用的MySQL数据库所支持的存储引擎,也可以通过查找information_schema架构下的ENGINES表。

InnoDB存储引擎

    InnoDB做为默认的存储引擎,也是市面上使用最多的存储引擎,我们这里重点介绍InnoDB的一些参数和优化方案。

IO Thread

    InnoDB存储引擎中大量使用了AIO(Async IO)来处理IO请求,这样可以极大的提高数据库的性能。

mysql>SHOW VARIABLES LIKE 'innodb_%io_threads'

    通过上述命令可以看到IO Thread的数量,在Linux平台下,IO Thread的数量不能进行调整,但是在Windows平台下可以通过参数innodb_file_io_threads来增大IO Thread。

Purge Thread

    事物被提交后,其所使用的undolog可能不再需要,因此需要PurgeThread来回收已经使用并分配的undo页。

mysql>SHOW VARIABLES LIKE 'innodb_purge_threads'

    InnoDB支持多个Purge Thread,这样做的目的是为了进一步加快undo页回收。同时由于Purge Thread需要离散的读取undo页,这样也能更进一步利用磁盘的随机读取性能。

缓冲池

    InnoDB存储引擎是基于磁盘存储的,缓冲池简单来说就是一块内存区域,通过内存速度来弥补磁盘速度较慢。

mysql>SHOW VARIABLES LIKE 'innodb_buffer_pool_size'

    通过上述语句查看缓冲池大小,同样通过配置参数innodb_buffer_pool_size来设置大小。同样除了缓冲池大小以外,从InnoDB 1.0.X版本开始,允许多个缓冲池实例。

mysql>SHOW VARIABLES LIKE 'innodb_buffer_pool_instances'

    在配置文件中将innodb_buffer_pool_instances设置为大于1的值就可以得到多个缓冲池实例。

LRU List

    数据库中的缓冲池是通过LRU(Latest Recent Used,最近最少使用)算法来进行管理的,默认配置为37%。

mysql>SHOW VARIABLES LIKE 'innodb_old_blocks_pct'

    通过上面的命令可以看到,新读取的页插入到LRU列表尾端37%的位置。如果用户预估自己的活跃的热点数据不止63%,那么可以通过设置innodb_old_blocks_pct参数来减少热点页可能被刷出的概率。

重做日志缓存

    InnoDB存储引擎的内存区域除了有缓冲池外,还有重做日志缓冲(redo log buffer)。该值可由配置参数innodb_log_buffer_size控制,默认为8MB。在通常情况下,8MB的重做日志缓冲池足以满足绝大部分的应用。

mysql>SHOW VARIABLES LIKE 'innodb_log_buffer_size'
自适应哈希索引

    InnoDB存储引擎会监控对表上各个索引页的查询。如果观察到建立哈希索引可以带来速度提升,则建立哈希索引,称之为自适应哈希索引(Adaptive Hash Index,AHI)。

mysql>SHOW VARIABLES LIKE 'innodb_adaptive_hash_index'

    默认是开启状态,用户可以根据实际需要禁用或启动此特性。

异步IO

    为了提高磁盘操作性能,InnoDB采用异步IO(Asynchronous IO,AIO)的方式来处理磁盘操作。参数innodb_use_native_aio来控制是否启用Native AIO,在Linux操作系统下,默认值为ON;官方的测试显示,启用Native AIO,恢复速度可以提高75%。

mysql>SHOW VARIABLES LIKE 'innodb_use_native_aio'

总结

    为大家介绍了MySQL基于InnoDB存储引擎的一些系统优化策略和参数;感兴趣的同学可以自己动手实验一下。

相关文章

  • MySQL数据库与SQL优化

    一、MySQL数据库 - SQL优化 MySQL DBMS - MySQL Database Management...

  • MySQL-性能优化-优化设计和设计原则

    MySQL-性能优化-优化设计和设计原则 MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给...

  • MySQL5:性能优化

    性能优化 优化MySQL数据库是数据库管理员和数据库开发人员的必备技能。MySQL优化,一方面是找出系统的瓶颈,提...

  • SQL审核优化建议

    SQL审核优化建议 数据库类型 MySQL:RDS MySQL、PolarDB MySQL、MariaDB、Pol...

  • 数据库存储原理特性索引优化

    说一下mysql数据库存储的原理? 事务的特性? 数据库索引 数据库怎么优化查询效率? 数据库优化方案 优化索引、...

  • MySQL优化

    概述 MySQL优化分为三部分优化: MySQL服务器和配置优化 数据库设计和结构优化 查询优化(重点) MySQ...

  • mysql性能与优化

    数据库结构优化 数据库结构设计 mysql复制

  • MySQL书目

    MySQL数据库索引设计与优化 MySQL技术内幕 MySQL排错指南 高性能MySQL MySQL DBA修炼之道

  • zabbix4.0 之mysql优化(Zabbix分区表)

    zabbix最大的瓶颈不在zabbix服务,而是mysql数据库的压力上,优化mysql其实就是优化zabbix的...

  • 性能优化系列文章目录

    1.概览 性能优化概览 2.MySQL数据库优化 如何做好MySQL数据库优化-第一部分 快速生成百万级测试数据 ...

网友评论

      本文标题:MySQL数据库优化

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