iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库的性能优化
  • 672
分享到

MySQL数据库的性能优化

MySQL性能优化数据库性能优化sql性能优化 2023-04-11 11:04:37 672人浏览 安东尼
摘要

目录一、Mysql数据库的优化目标、基本原则:1、优化目标:2.基本原则:二、定位分析sql语句的性能瓶颈:1、通过show status 命令了解各种SQL的执行效率:2、定位执行效率较低的SQL语句3、通过expla

一、mysql数据库的优化目标、基本原则:

1、优化目标:

MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,无论是索引优化、还是表结构优化,参数优化,最后都可以归纳到这这两个分类中:

(1)减少 I/O 次数:

I/O是数据库最容易瓶颈的地方,大部分数据库操作中超过90%的时间都是 io 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是效果最明显的优化手段。

(2)降低 CPU 计算:

除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by,group by,distinct … 都是消耗 CPU 的大户(这些操作基本上都是 CPU 处理内存中的数据比较运算)。当我们的 IO 优化做到一定阶段之后,降低 CPU 计算也就成为了我们 SQL 优化的重要目标。

2.基本原则:

1).优先优化高并发的 SQL,而不是执行频率低某些“大”SQL

对于破坏性来说,高并发的 SQL 总是会比低频率的 SQL 来得大,因为高并发的 SQL 一旦出现问题,甚至不会给我们任何喘息的机会就会将系统压跨。而对于一些虽然需要消耗大量 IO 而且响应很慢的 SQL,由于频率低,即使遇到,最多就是让整个系统响应慢一点,但至少可能撑一会儿,让我们有缓冲的机会

2).从全局出发优化,而不是片面调整

SQL 优化不能是单独针对某一个进行,而应充分考虑系统中所有的 SQL,尤其是在通过调整索引优化 SQL 的执行计划的时候

3).尽可能对每一条运行在数据库中的SQL进行 explain

优化 SQL,知道 SQL 的执行计划判断是否有优化余地,判断是否存在执行计划问题。
进行大量的 explain 操作收集执行计划,并判断是否需要进行优化

二、定位分析SQL语句的性能瓶颈:

1、通过show status 命令了解各种SQL的执行效率:

show [session | global] status;

可以根据需要加上参数来显示session级(当前连接,默认)和global级(自数据库上次启动至今)的统计结果。

show status like ‘Com_%’; —显示当前连接所有统计参数的值。
Com_xxx表示每个xxx语句执行的次数,通常需要注意的是下面几个参数:

Com_select/Com_insert/Com_update/Com_delete

2、定位执行效率较低的SQL语句

(1)通过show processlist命令实时查看当前SQL的执行情况;
(2)通过慢查询日志定位出现的问题

3、通过explain分析慢SQL的执行计划

4、通过show profile 分析SQL的具体耗时瓶颈

通过secect @have_profiling命令能够看到当前MySQL是否支持profile;
通过show profiles我们能够更清楚了解SQL执行的过程;
通过show profile for query我们能看到执行过程中线程的每个状态和消耗的时间。

三、数据库的优化方法:

1、设计符合范式的数据库
2、选择合适的存储引擎
3、SQL表结构、字段优化
4、SQL语句优化与索引优化
5、读写分离:主数据库负责写操作,从数据库负责读操作
6、分库分表:垂直切分与水平切分
7、分区:将表的数据按照特定的规则放在不同的分区,提高磁盘的IO效率,提高数据库的性能
8.数据库参数优化:IO参数、CPU参数
9.数据库集群
10.硬件配置升级

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库的性能优化

本文链接: https://www.lsjlt.com/news/201419.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么显示表的字段
    如何显示 oracle 表的字段 在 Oracle 数据库中,可以使用 DESC 命令显示表的字段。 语法: DESC table_name 参数: table_name:要显示字段的表...
    99+
    2024-05-14
    oracle
  • oracle怎么看所有的表
    在 oracle 数据库中查看所有表的步骤:连接到数据库运行查询:select table_name from user_tables; 如何使用 Oracle 查看所有表 ...
    99+
    2024-05-14
    oracle
  • oracle怎么显示行数
    如何使用 oracle 显示行数 在 Oracle 数据库中,有两种主要方法可以显示行数: 1. 使用 COUNT 函数 SELECT COUNT(*) FROM table_n...
    99+
    2024-05-14
    oracle
  • oracle怎么显示百分比
    oracle中显示百分比的方法有:使用百分号“%”;使用to_char()函数;使用format()函数(oracle 18c及更高版本);创建自定义函数。 Oracle 显...
    99+
    2024-05-14
    oracle
  • oracle怎么删除列
    oracle 中删除列的方法有两种:1)使用 alter table table_name drop column column_name 语句;2)使用 drop colum...
    99+
    2024-05-14
    oracle
  • sql怎么查看表的索引
    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:mysql 的 information_schema.statistics、postg...
    99+
    2024-05-14
    mysql oracle
  • sql怎么查看索引
    您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。informat...
    99+
    2024-05-14
  • sql怎么查看存储过程
    如何查看 sql 存储过程的源代码:使用 show create procedure 语句直接获取创建脚本。查询 information_schema.routines 表的 routi...
    99+
    2024-05-14
  • sql怎么查看视图表
    要查看视图表,可以使用以下步骤:使用 select 语句获取视图中的数据。使用 desc 语句查看视图的架构。使用 explain 语句分析视图的执行计划。使用 dbms 提供...
    99+
    2024-05-14
    oracle python
  • sql怎么查看创建的视图
    可以通过sql查询查看已创建的视图,具体步骤包括:连接到数据库并执行查询select * from information_schema.views;查询结果将显示视图的名称、...
    99+
    2024-05-14
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作