
MySQL优化
文章平均质量分 91
MySQL优化系列博客
只是甲
10年及以上金融信贷、通信行业数据库运维管理、数据仓库及大数据相关工作经验,持有Oracle OCP和Linux RHCE认证证书。
展开
-
MySQL优化案例篇1-mysqldump与load data比较篇
文章目录一.环境准备二.数据迁移开始2.1 mysqldump导出2.2 select ... into outfile导出2.3 mysql 导入2.4 load data导入2.5 总结参考:一.环境准备一直想测试下mysqldump与load data的性能比较,今天抽出部分时间,在测试环境进行测试。如下所示,我有一个测试表fact_sale,有7亿多行数据,数值类型、字符类型、时间类型的字段均有。下面我们测试将这个表的数据分别通过mysqldump与load data进行导出,然后在目标环境原创 2022-04-24 14:22:53 · 1289 阅读 · 1 评论 -
MySQL优化系列18-应用层优化
备注:测试数据库版本为MySQL 8.0文章目录一.概述二. 常见问题三.web服务器问题3.1 寻找最优并发度四.缓存4.1 应用层以下的缓存4.2 应用层缓存4.3 缓存控制策略五.MySQL的替代品参考:一.概述如果在提高MySQL的性能上花费太多时间,容易使视野局限于MySQL本身,而忽略了用户体验。回过头来看,也许可以意识到,或许MySQL已经足够优化,对于用户看到的响应时间而言,其所占的比重已经非常之小,此时应该关注下其他部分了。这是个很不错的观点,尤其是对DBA而言,这是很值得去做的正确原创 2021-07-21 14:08:08 · 5716 阅读 · 1 评论 -
MySQL优化系列17-MySQL SQL语句优化
备注:测试数据库版本为MySQL 8.0文章目录一.优化select语句1.1 where子句优化1.2 IS NULL 优化1.3 ORDER BY优化1.4 group by 优化1.4.1 宽松的索引扫描1.4.2 紧索引扫描1.5 distinct优化1.6 Limit优化1.7 避免全表扫描二.优化DML语句2.1 优化insert语句2.2 优化update语句2.3 优化delete语句参考:一.优化select语句1.1 where子句优化剔除重复的条件 ((a AND b原创 2021-07-21 14:06:34 · 4744 阅读 · 1 评论 -
MySQL优化系列16-优化MySQL的锁
备注:测试数据库版本为MySQL 8.0文章目录一. 内部锁定方法1.1 行锁1.2 表锁1.3 选择锁定类型二.表锁问题2.1 性能考虑优先考虑InnoDB2.2 锁定性能问题的解决方法三. 并发插入四.元数据锁4.1 元数据锁获取4.2 元数据锁释放五. 外部锁参考:一. 内部锁定方法本节讨论内部锁定;也就是说,在MySQL服务器内部执行锁定,以管理多个会话对表内容的争用。这种类型的锁定是内部的,因为它完全由服务器执行,不涉及其他程序。1.1 行锁MySQL为InnoDB表使用行级锁来支持多个原创 2021-07-20 15:13:25 · 4726 阅读 · 3 评论 -
MySQL优化系列15-优化Innodb表
备注:测试数据库版本为MySQL 8.0文章目录一. 优化InnoDB表的存储布局二.优化InnoDB事务管理三.优化InnoDB只读事务四. 优化InnoDB重做日志五. InnoDB表的批量数据加载六. 优化InnoDB查询七. 优化InnoDB DDL操作八. 优化InnoDB磁盘I/O九. 优化InnoDB配置变量十. 优化InnoDB系统与许多表参考:一. 优化InnoDB表的存储布局一旦您的数据达到稳定的大小,或者一个不断增长的表增加了几十或几百兆字节,请考虑使用OPTIMIZE tabl原创 2021-07-19 14:06:43 · 5202 阅读 · 7 评论 -
MySQL优化系列14-优化MySQL内存
备注:测试数据库版本为MySQL 8.0文章目录一. MySQL如何使用内存二.监控MySQL内存使用三.开始large page支持参考:一. MySQL如何使用内存MySQL分配缓冲区和缓存来提高数据库操作的性能。默认配置被设计为允许MySQL服务器在拥有大约512MB内存的虚拟机上启动。您可以通过增加某些缓存和缓冲区相关的系统变量的值来提高MySQL的性能。您还可以修改默认配置,以便在内存有限的系统上运行MySQL。下面的列表描述了MySQL使用内存的一些方式。在适用的情况下,引用了相关的系统原创 2021-07-15 14:09:48 · 5442 阅读 · 1 评论 -
MySQL优化系列13-MySQL8.0 表连接方法简介
备注:测试数据库版本为MySQL 8.0文章目录一. Nested Loop Join算法1.1 普通的Nested Loop Join算法1.3 Batched Key Access 算法二.Hash Join三.表连接实例3.1 Nest Loop Join3.2 hash join参考:一. Nested Loop Join算法1.1 普通的Nested Loop Join算法将外层表的结果集作为循环的基础数据,然后循环从该结果集每次一条获取数据作为下一个表的过滤条件去查询数据,然后合并结果。原创 2021-07-14 14:08:10 · 4910 阅读 · 1 评论 -
MySQL优化系列12-MySQL分区表
备注:测试数据库版本为MySQL 8.0文章目录一.分区表简介二.分区的类型2.1 range分区2.2 list分区2.3 colums分区2.3.1 RANGE COLUMNS分区2.3.2 LIST COLUMNS2.4 哈希分区2.4.1 LINEAR HASH分区2.5 key 分区2.6 子分区2.7 MySQL分区如何处理null值三.分区管理3.1 管理range和list分区3.2 管理hash和key分区3.3 交换分区和子分区3.3.1 与非分区表交换分区3.3.2 未匹配的行3.原创 2021-07-13 10:04:24 · 3754 阅读 · 3 评论 -
MySQL优化系列11-MySQL游标和绑定变量
备注:测试数据库版本为MySQL 8.0文章目录一. MySQL游标简介二.绑定变量2.1 绑定变量的优化2.2 SQL接口的绑定变量2.3 绑定变量的限制参考:一. MySQL游标简介MySQL在服务器端提供只读的、单向的游标,而且只能在存储过程或者更底层的客户端API中使用。因为MySQL游标中指向的对象都是存储在临时表中而不是实际查询到的数据,所以MySQL游标总是只读的。它可以逐行指向查询结果,然后让程序做进一步的处理。在一个存储过程中,可以有多个游标,也可以在循环中“嵌套”地使用游标。MyS原创 2021-07-07 13:59:15 · 4295 阅读 · 1 评论 -
MySQL优化系列10-MySQL的并行介绍
备注:测试数据库版本为MySQL 8.0一.MySQL InnoDB并行查询介绍MySQL经过多年的发展已然成为最流行的数据库,广泛用于互联网行业,并逐步向各个传统行业渗透。之所以流行,一方面是其优秀的高并发事务处理的能力,另一方面也得益于MySQL丰富的生态。MySQL在处理OLTP场景下的短查询效果很好,但对于复杂大查询则能力有限。最直接一点就是,对于一个SQL语句,MySQL最多只能使用一个CPU核来处理,在这种场景下无法发挥主机CPU多核的能力。MySQL没有停滞不前,一直在发展,新推出的8.0原创 2021-07-06 13:59:31 · 5273 阅读 · 1 评论 -
MySQL优化系列9-MySQL控制查询优化器Hints
备注:测试数据库版本为MySQL 8.0文章目录一.控制查询计划评估二. 可切换的优化三. 优化器的Hints3.1 优化器Hints概述3.2 优化器Hints语法3.3 连接顺序优化器Hints3.4 表级别的优化器Hints3.5 索引级别优化器Hints3.6 子查询相关优化器的Hints3.7 语句执行时间优化器Hints3.8 可变设定Hints语法3.9 资源组 Hint 语法3.10 命名查询块的优化器Hints四.索引Hints参考:一.控制查询计划评估查询优化器的任务是找到执行SQ原创 2021-07-05 14:37:49 · 5185 阅读 · 0 评论 -
MySQL优化系列8-MySQL的执行计划介绍
备注:测试数据库版本为MySQL 8.0文章目录一.使用EXPLAIN优化查询1.1 Explain语法及概述1.1.1 获取表结构信息1.1.2 获取执行计划信息1.1.3 使用EXPLAIN ANALYZE获取信息二.Explain输出格式2.1 EXPLAIN 输出列2.1.1 id (JSON name: select_id)2.1.2 select_type (JSON name: none)2.1.3 table (JSON name: table_name)2.1.4 partitions原创 2021-07-02 14:13:24 · 3708 阅读 · 0 评论 -
MySQL优化系列7-MySQL的统计信息
文章目录一.InnoDB的统计信息概述二. 配置持久化优化统计参数2.1 为持久优化器统计配置自动统计计算2.2 为单个表配置优化器统计参数2.3 配置InnoDB优化器统计抽样页数2.4 在持久统计计算中包括删除标记的记录2.5 InnoDB持久化统计表2.6 InnoDB Persistent Statistics Tables示例2.7 使用innodb_index_stats表获取索引大小三.配置非持久性优化器统计参数3.1 优化器数据更新3.2 配置采样页面数四.估计分析InnoDB表的复杂性五.原创 2021-07-01 13:59:12 · 3857 阅读 · 0 评论 -
MySQL优化系列6-索引优化
备注:测试数据库版本为MySQL 8.0文章目录一.索引介绍1.1 索引的类型1.1.1 B-Tree索引1.1.2 B+Tree索引1.2.3 B*Tree索引1.1.4 哈希索引1.1.5 空间数据索引1.1.6 全文索引二.如何创建高性能的索引2.1 独立的列2.2 前缀索引和索引选择性2.3 多列索引2.4 选择合适的索引列顺序2.5 聚簇索引2.6 覆盖索引2.7 使用索引扫描来做排序2.8 压缩(前缀压缩)索引2.9 冗余和重复索引2.10 未使用的索引2.11 索引和锁2.12 索引下推2.原创 2021-06-30 13:58:05 · 3672 阅读 · 3 评论 -
MySQL优化系列5-Schema与数据类型优化
备注:测试数据库版本为MySQL 8.0文章目录一.Schema与数据类型优化概述二.选择优化的数据类型2.1 整数类型2.2 实数类型2.3 字符类型2.4 日期和时间类型2.5 其它类型三.范式和反范式四.计数器表五.加快ALTER TABLE操作的速度5.1 预留列5.2 更改表定义文件5.3 MySQL 8.0 快速加列5.3.1 快速加列支持类型5.3.2 立刻加列的限制5.3.3 立刻加列的实现参考:一.Schema与数据类型优化概述良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要原创 2021-06-29 14:35:50 · 3676 阅读 · 0 评论 -
MySQL优化系列4-MySQL压力测试
备注:测试数据库版本为MySQL 8.0文章目录一.MySQL压力测试概述二.压力测试的工具2.1 测试工具-fio2.1.1 FIO安装2.1.2 fio参数说明2.1.3 测试用例2.2 TPCC测试2.2.1 环境安装2.2.2 bug修复2.2.3 开始测试2.3 Sysbench2.3.1 sysbench安装2.3.2 sysbench参数2.3.3 测试CPU2.3.4 测试IO2.3.5 对mysql事务型OLTP的测试参考:一.MySQL压力测试概述为什么压力测试很重要?因为压力测试原创 2021-06-28 14:14:27 · 4092 阅读 · 0 评论 -
MySQL优化系列3-Linux查看CPU、内存、磁盘、网络信息
备注:测试数据库版本为MySQL 8.0文章目录一.查看CPU信息1.1 查看物理CPU个数1.2 查看每个物理CPU中core的个数(即核数)1.3 查看逻辑CPU的个数1.4 查看CPU信息(型号)1.5 查看CPU的负载二.查看内存及交换空间2.1 /proc/meminfo2.2 free 命令2.3 释放cache三.磁盘信息3.1 fdisk命令3.2 查看磁盘的性能四.网络资源4.1 查看网卡基本信息4.2 查看网卡接口的速度4.3 网卡流量监控工具 iptraf4.4 netstat查看网原创 2021-06-25 15:00:12 · 10226 阅读 · 0 评论 -
MySQL优化系列2-操作系统优化概述
备注:测试数据库版本为MySQL 8.0文章目录一.选择操作系统二.选择文件系统三.选择磁盘队列调度策略3.1 Noop算法3.2 Deadline算法3.3 Anticipatory算法4.4 CFQ算法五.线程六.内存交换区参考:一.选择操作系统GNU/Linux如今是高性能MySQL最常用的操作系统,但是MySQL本身可以运行在很多操作系统上。MySQL官网 8.0和 5.7 支持的操作系统(https://www.mysql.com/support/supportedplatforms/da原创 2021-06-23 13:49:57 · 5631 阅读 · 0 评论 -
MySQL优化系列1- 硬件优化概述
备注:测试数据库版本为MySQL 8.0文章目录一.硬件优化概述二.CPU2.1 CPU密集型2.2 I/O密集型三.内存四.硬盘4.1 存储简介4.2 RAID4.3 硬盘三大种类4.4 找到有效的内存/磁盘比例五.网络资源参考:一.硬件优化概述MySQL的硬件有:CPU内存硬盘网络资源对于硬件的选择与调优,在系统上线前就需要考虑起来。当然我们都知道:好的CPU,可以让SQL语句解析得更快,进而加快SQL语句的执行速度。大的内存,可以缓存更多的MySQL数据在内存中,进而加快M原创 2021-06-21 14:03:07 · 6059 阅读 · 0 评论