iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何进行MySQL管理基础中的性能优化
  • 831
分享到

如何进行MySQL管理基础中的性能优化

2024-04-02 19:04:59 831人浏览 安东尼
摘要

如何进行Mysql管理基础中的性能优化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.索引<1&g

如何进行Mysql管理基础中的性能优化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.索引

<1>应该添加索引的列包括:用于连接的列,WHERE、GROUP BY或ORDER BY子句涉及的列。
<2>有很多重复值的列不能通过建立索引来改善性能,取值唯一的列则能充分通过索引获益。
<3>索引并非越多越方便,它可能在增加搜索速度的同时,减慢INSERT、DELETE和UPDATE等写操作。很小的表不需要创建索引。

   一些服务器状态变量的值可以反映索引的情况或为添加索引提供参考,例如:

   Handler_read_key:通过索引读取行的请求数。该值较低,表示索引不经常使用。
   Handler_read_rnd_next:在数据文件中读下一行的请求数。该值较高,表示存在大量的全表扫描,说明表上没有适当地建立索引或查询没有利用到索引。

   可以mysqladmin extended-status或SHOW STATUS命令查看状态变量,例如:

mysql> show status like 'Handler_read_%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Handler_read_first    | 0     |
| Handler_read_key      | 0     |
| Handler_read_next     | 0     |
| Handler_read_prev     | 0     |
| Handler_read_rnd      | 0     |
| Handler_read_rnd_next | 0     |
+-----------------------+-------+
6 rows in set (0.00 sec)

[@more@]对于建立了索引的表,应该定期执行ANALYZE TABLE命令。该命令分析并存储一个表的键分布,MySQL使用存储的键分布决定连接时表的连接顺序,以及查询时使用哪些索引。


2.query cache

   查看相关的服务器系统变量,确认query cache已经打开:

mysql> show variables like '%query_cache%';
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| have_query_cache             | YES      |
| query_cache_limit            | 1048576  |
| query_cache_min_res_unit     | 4096     |
| query_cache_size             | 15728640 |
| query_cache_type             | ON       |
| query_cache_wlock_invalidate | OFF      |
+------------------------------+----------+
6 rows in set (0.00 sec)

   have_query_cache:MySQL服务器是否支持query cache。
   query_cache_size:分配给query cache的内存总量。
   query_cache_type:query cache的类型。0或OFF表示不使用query cache,但系统还是会为query cache分配内存空间;1或ON表示缓存所有查询结果,但以SELECT SQL_NO_CACHE开头的除外;2或DEMAND表示只缓存以SQL_CACHE开头的语句。

   一旦表发生变化,query cache中涉及该表的缓存内容就会失效,所以经常变化的表并不能从query cache的使用中受益,可以考虑为这些查询添加SQL_NO_CACHE选项。


3.查询分析

   在查询语句最前面添加EXPLaiN关键字,返回的结果将列出该语句中所有的SELECT。例如:

mysql> explain select a.username, b.nickname, a.email from members a, memberfields b where a.uid = b.uid and a.email lik
e "%163.com";
+----+-------------+-------+--------+---------------+---------+---------+-------------+-------+-------------+
| id | select_type | table | type   | possible_keys | key     | key_len | ref         | rows  | Extra       |
+----+-------------+-------+--------+---------------+---------+---------+-------------+-------+-------------+
|  1 | SIMPLE      | b     | ALL    | PRIMARY       | NULL    | NULL    | NULL        | 46237 |             |
|  1 | SIMPLE      | a     | eq_ref | PRIMARY       | PRIMARY | 3       | test2.b.uid |     1 | Using where |
+----+-------------+-------+--------+---------------+---------+---------+-------------+-------+-------------+
2 rows in set (0.00 sec)

   id列为SELECT在整个查询中的位置;select_type列为查询的类型,如简单查询、UNION中最后面的查询、子查询等等;type列为执行连接的情况,const最佳,ALL最差;possible_keys列为可能使用的索引;key列为实际使用的索引;rows列为执行该查询需要在相应表中检索的行的数量,将每条记录中的数字相乘即为该查询的总开销;Extra列为一些其它相关信息。


4.优化多表查询

(1) 子查询转连接

   例如:

select email from cdb_members where uid = (select uid from cdb_memberfields where nickname = 'aquxyz');

   可转化为:

select email from cdb_members c_m, cdb_memberfields c_mf where c_m.uid = c_mf.uid and nickname = 'aquxyz';

(2) 巧妙利用对结果集的限制

   例如:

select nickname from cdb_memberfields where uid = (select uid from cdb_members where email like '%com.cn' and regdate = (select min(regdate) from cdb_members));

   可转化为:

select nickname from cdb_memberfields c_mf, cdb_members c_m where c_mf.uid = c_m.uid and c_m.email like '%com.cn' order by c_m.regdate asc limit 1;

(3) 使用变量

   还是上面的例子,可转化为如下两条语句:

select @min:=min(regdate) from cdb_members;
select nickname from cdb_memberfields c_mf, cdb_members c_m where c_mf.uid = c_m.uid and c_m.email like '%com.cn' and c_m.regdate = @min;


5.优化表

<1>对于经常修改的表,使用定长字段,而不用变长字段(对InnoDB表无效);删除没有用的字段。
<2>OPTIMIZE TABLE命令。
<3>对表进行合并;在查询中使用具有相同类型和长度的连接字段。


6.调整服务器设置

   可以通过调整一些服务器系统变量,提高MySQL服务器的性能。

<1>key_buffer_size:MyISAM表的索引块使用的缓冲区大小。一般可以设置为服务器可用内存的25%-30%。
<2>table_cache:MySQL的所有线程可以打开的表的总数。应根据Opened_tables状态变量的值来决定是否要增大该值。
<3>sort_buffer_size:为每个线程的排序操作分配的缓冲区大小。增大该值可以加快ORDER BY和GROUP BY操作。
<4>read_buffer_size:为每个线程的sequential scan分配的缓冲区。增大该值可以提高查询速度。
<5>read_rnd_buffer_size:为每个线程的random scan分配的缓冲区。索引排序操作后,MySQL从这个缓冲区中读取排好顺序的行,增大该值可以加快ORDER BY操作。每个客户端都会分配此缓冲区,所以不要全局变量设置得太大。
<6>binlog_cache_size:事务过程中为为binary log保存SQL语句的高速缓存。如果经常使用大型、多语句的事务,可以增大该值以获得更好的性能。
<7>bulk_insert_buffer_size:为每个线程的批量insert操作分配的树状cache的大小。
<8>tread_cache_size:服务器缓存线程以便重用的总数。如果有许多新连接,可以考虑增大该值。

undefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefined

关于如何进行MySQL管理基础中的性能优化问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: 如何进行MySQL管理基础中的性能优化

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

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

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

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

下载Word文档
猜你喜欢
  • 如何进行MySQL管理基础中的性能优化
    如何进行MySQL管理基础中的性能优化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.索引<1&g...
    99+
    2022-10-19
  • 如何进行MySQL管理基础中的维护、备份和恢复
    如何进行MySQL管理基础中的维护、备份和恢复,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.日志记录   &nb...
    99+
    2022-10-19
  • 怎么进行MySQL性能优化中的索引优化
    本篇文章为大家展示了怎么进行MySQL性能优化中的索引优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引...
    99+
    2022-10-19
  • 如何解析MySQL性能优化中的SQL优化
    如何解析MySQL性能优化中的SQL优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。注:以 MySQL 为背景,很多内容同时适用于其他关系型...
    99+
    2022-10-19
  • 如何进行C++代码的性能优化?
    如何进行C++代码的性能优化?性能优化是软件开发过程中非常重要的一环,它旨在提高程序的运行速度和效率,减少资源的消耗。而对于C++代码的性能优化来说,更是至关重要的一步。下面将介绍一些常见、实用的C++代码性能优化技巧。选择合适的数据结构:...
    99+
    2023-11-02
    优化 C++ 代码性能
  • 前端发开中如何进行性能优化
    小编给大家分享一下前端发开中如何进行性能优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!content方面1,减少HTTP请求...
    99+
    2022-10-19
  • 如何进行MySQL中的order by 优化
    这篇文章将为大家详细讲解有关如何进行MySQL中的order by 优化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 一 前言...
    99+
    2022-10-19
  • 如何在Python中进行代码性能优化和性能测试
    如何在Python中进行代码性能优化和性能测试引言:当我们编写代码时,经常会面临代码执行速度慢的问题。对于一个复杂的程序来说,效率的提升可以带来明显的性能提升。本文将介绍如何在Python中进行代码性能优化和性能测试,并给出具体的代码示例。...
    99+
    2023-10-22
    性能 (Performance) 优化 (Optimize) 测试 (Test)
  • PHP中如何进行网站性能测试和优化?
    PHP是一种广泛应用于Web开发的脚本语言,在Web应用和网站开发中占有重要地位。随着Web应用和网站的功能不断扩展,对性能的要求越来越高。因此,如何进行PHP网站性能测试和优化显得非常重要,本文将详细介绍PHP网站性能测试和优化的方法和技...
    99+
    2023-05-21
    PHP性能测试 PHP网站性能优化 PHP性能工具
  • Java 性能优化中如何进行字符串过滤
    本篇文章给大家分享的是有关Java 性能优化中如何进行字符串过滤,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。★一个简单的需求  首先描述一下需求:给定一个 String 对象...
    99+
    2023-06-02
  • 如何理解MySQL管理基础中的安全、访问控制和权限
    如何理解MySQL管理基础中的安全、访问控制和权限,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MySQL权限系统确保所有的用...
    99+
    2022-10-19
  • 如何在PHP项目中进行性能调优和资源优化?
    如何在PHP项目中进行性能调优和资源优化?随着互联网的高速发展,越来越多的应用程序采用了PHP作为开发语言。由于PHP的易用性和灵活性,许多开发人员选择使用它来构建自己的网站和应用程序。然而,由于PHP的动态特性和解释性质,一些开发人员可能...
    99+
    2023-11-03
    性能调优 PHP项目 资源优化
  • 如何在MySQL数据库中优化insert的性能
    如何在MySQL数据库中优化insert的性能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。MySQL的 insert 语句语法,关于mysq...
    99+
    2022-10-18
  • 数组容器对象在Python中的性能如何?如何进行优化?
    在Python中,数组容器对象是常用的数据结构之一。它们被广泛应用于许多领域,例如科学计算、图像处理、机器学习等。但是,数组容器对象的性能问题一直是开发者们关注的焦点。本文将探讨数组容器对象在Python中的性能问题,并提供一些优化方法,...
    99+
    2023-08-20
    数组 容器 对象
  • 如何进行生产数据库性能优化的分析
    这期内容当中小编将会给大家带来有关如何进行生产数据库性能优化的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。需求:在钉钉群个人简介页面需要显示钉钉群名称和简介,每个群...
    99+
    2022-10-19
  • 如何使用Python中的内存管理技巧优化代码性能
    如何使用Python中的内存管理技巧优化代码性能在编写Python代码时,优化性能是一个重要的考虑因素。虽然Python作为一种解释型语言,在运行效率上可能不如编译型语言,但是通过合理使用内存管理技巧,我们还是能够优化Python代码的性能...
    99+
    2023-10-22
    Python 内存管理 代码性能
  • Golang开发建议:如何进行高效的性能调优和优化
    Golang开发建议:如何进行高效的性能调优和优化随着互联网和大数据时代的到来,软件的性能要求也越来越高。作为一种快速、高效、并发性好的编程语言,Golang在构建高性能应用程序方面表现出色。然而,即使使用了Golang,也不意味着就能够轻...
    99+
    2023-11-22
    优化 Golang 性能调优
  • 如何优化MySQL数据库中的SQL语句性能?
    如何优化MySQL数据库中的SQL语句性能?概述:MySQL是目前最常用的关系型数据库管理系统之一,它的性能影响着许多应用程序的运行效率。在开发和维护MySQL数据库时,优化SQL语句的性能是至关重要的。本文将介绍一些优化MySQL数据库中...
    99+
    2023-12-17
    MySQL 优化 SQL语句性能
  • 微服务架构中如何处理服务的性能优化和资源管理?
    随着云计算和微服务的兴起,构建基于微服务的应用程序已经成为现代软件开发的常规方式。微服务可以帮助开发人员在不同的团队之间更好地分离和分配工作,同时也提高了灵活性和可扩展性。在微服务架构中,性能优化和资源管理是非常重要的,因为这些问题直接影响...
    99+
    2023-05-17
    性能优化 资源管理 微服务架构
  • 如何理解SQL Server SQL性能优化中的参数化
    如何理解SQL Server SQL性能优化中的参数化,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据库参数化的模式数据库的...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作