热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL性能优化与调参指南【数据库管理】

本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。

数据库|mysql教程MySQL调优【MySQL】
,优化
数据库-mysql教程
bitsCN.com
ios移动app源码,vscode如何手动调试,xp ubuntu,免安装tomcat配置,sqlite 单例模式,网页设计师的作品,asp 数据库 中文问号,最好的vps服务器,layerslider插件下载,前端自动学习框架技术,网络爬虫功能,php 获取ip地址,帝国seo,springboot读法,dede keywords标签,仿xss网站搭建,flash 网页全屏,html5后台网站模板,dede 后台模版,动态登陆页面,毕业设计cs架构餐饮管理系统软件,上哪找淘宝客程序lzw
调优思路:
jsp会员管理系统源码,ubuntu 选择挂载点,idea调试tomcat7,爬虫动漫之家,php模板word导出,红桥区seo百度关键词排名lzw
1.数据库设计与规划–以后再修该很麻烦,估计数据量,使用什么存储引擎
适合个人网站备案的php源码,ubuntu20死机,爬虫系统用户体验,类hook php,南沙seo费用lzw
2.数据的应用–怎样取数据,sql语句的优化

3.mysql服务优化–内存的使用,磁盘的使用

4.操作系统的优化–内核、tcp连接数量

5.升级硬件设备

磁盘io规划

raid技术:raid0[xfs]

swap分区:最好使用raid0

磁盘分区:一个库放到一个分区上或一个磁盘上

物理分区

create table t1(id int,name char(20)) data directory=’/data/’ index directory =’/data’;

mkdir /data

chown mysql.mysql /data

mysql> show variables like ‘%part%’;

4.操作系统的优化

网卡bonding技术,

tcp连接数量限制

优化系统打开文件的最大限制

关闭操作系统不必要的服务

5.mysql服务优化

show status 看系统的资源

show variables 看变量,在my.cnf配置文件里定义的

show warnings 查看最近一个sql语句产生的错误警告,看其他的需要看.err日志

show processlist显示系统中正在运行的所有进程。

show errors

启用mysql慢查询:—分析sql语句,找到影响效率的SQL

log-slow-queries=/var/lib/mysql/slow.log 这个路径对mysql用户具有可写权限

long_query_time=2 查询超过2秒钟的语句记录下来

上面的2 是查询的时间,即当一条SQL 执行时间超过5秒的时候才记录,/var/lib/mysql/slow.log 是日志记录的位置。

然后重新启动MySQL服务

对查询进行缓存

query_cache_size 使用多大内存来缓存查询语句[+8M]

mysql> show variables like’%query%’

query_cache_size=8M

[root@st mysql]# vim /etc/my.cnf

mysql> show status like ‘%Qcache%’;

Qcache_free_blocks:说明缓存太大了。缓存中相邻内存的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。[+8M]

Qcache_free_memory缓存中的空闲内存

Qcache_hits每次查询在缓存中命中时就增大

Qcache_inserts每插入一个查询时就增大。命中次数除以插入次数就是命中率。

Qcache_lowmen_prunes缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间看;如果这个数字在不断增长就表示可能碎片非常严重,或者内存很少

Qcache_hits/Qcache_inserts 命中率

关键字缓冲区

mysql> show status like ‘%key%’;

mysql> show variables like’key_buffer_size’;

key_buffer_size 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。[+8M]

key_read_requests 请求总数

key_reads 代表命中磁盘的请求个数

(key_read_requests-key_read)/key_read_requests:命中率

key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)。

临时表空间大小:order by和group by时把数据放到临时表里。

tmp_table_size 占的是内存的大小,如果太小在排序时会出错

created_tmp_tables 创建临时表的数量

max_tmp_tables=32

tmpdir=/tmp 硬盘上临时表所在的位置

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

innodb表:

创建表空间文件

[mysqld]

innodb_data_file_path=ibdata1:10M:autoextend

这个设置配置一个可扩展大小的尺寸为10MB的单独文件,名为ibdata1。没有给出文件的位置,所以默认的是在MySQL的数据目录内。

如果你对最后的数据文件指定autoextend选项。如果数据文件耗尽了表空间中的自由空间,InnoDB就扩展数据文件。扩展的幅度是每次8MB。

要为一个自动扩展数据文件指定最大尺寸,请使用max属性。下列配置允许ibdata1涨到极限的500MB:

[mysqld]

innodb_data_file_path=ibdata1:10M:autoextend:max:500M

InnoDB默认地在MySQL数据目录创建表空间文件。要明确指定一个位置,请使用innodb_data_home_dir选项。比如,要使用两个名为ibdata1和ibdata2的文件,但是要把他们创建到/ibdata,像如下一样配置InnoDB:

[mysqld]

innodb_data_home_dir = /ibdata

innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

mysql> show variables like ‘innodb_buffer_pool_size’;

innodb_buffer_pool_size

对于InnoDB表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size对于MyISAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。

根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。

mysql> show variables like ‘innodb_%per%’;[建议打开]

innodb_file_per_table =1 为每一个表单独创建一个表空间文件。

其他参数

skip-locking

取消文件系统的外部锁,减少出错几率增强稳定性

skip-name-resolve

关闭mysql的dns反查功能。这样速度就快了!

选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。

wait_timeout=10 终止空闲时间超过10秒的链接,避免长连接[默认8个小时]

max_connect_errors=10 //10次连接失败就锁定,使用flush hosts 解锁,

或mysqladmin flush-hosts解锁

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL语句调优:

explain命令:查询select。

.type

这列很重要,显示了连接使用了哪种类别,有无使用索引

从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL

本文出自 “技术” 博客

bitsCN.com


推荐阅读
  • DHCP三层交换机设置方式全局模式和接口模式设置方式和命令resetsave回车输入yreboot输入n输入y重启后就恢复默认设置了默认用户名密码adminAdmin@huawei ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 使用Boost.Asio进行异步数据处理的应用程序主要依赖于两个核心概念:I/O服务和I/O对象。I/O服务抽象了操作系统接口,使得异步操作能够高效地执行。I/O对象则代表了具体的网络资源,如套接字和文件描述符,通过这些对象可以实现数据的读写操作。本文详细介绍了这两个概念在Boost.Asio中的应用及其在网络编程中的重要性。 ... [详细]
  • 题目描述:21世纪水果公司专注于开发新型水果品种。本研究通过高级水果的最长公共子序列路径分析,探讨了不同水果品种之间的遗传关系和进化路径,为新品种的培育提供了科学依据。该方法不仅提高了品种鉴定的准确性,还为遗传多样性研究提供了新的视角。 ... [详细]
  • 使用 Vue 集成 iScroll 实现移动端表格横向滚动与固定列功能 ... [详细]
  • MySQL:不仅仅是数据库那么简单
    MySQL不仅是一款高效、可靠的数据库管理系统,它还具备丰富的功能和扩展性,支持多种存储引擎,适用于各种应用场景。从简单的网站开发到复杂的企业级应用,MySQL都能提供强大的数据管理和优化能力,满足不同用户的需求。其开源特性也促进了社区的活跃发展,为技术进步提供了持续动力。 ... [详细]
  • 深入解读代码页与字符集的概念及其实际应用
    许多开发者可能未曾留意到这一问题,但如果您的网站频繁遭遇不明原因的乱码现象,深入了解代码页与字符集的概念及其实际应用将大有裨益。代码页(Codepage),即内码表,是计算机系统中用于映射字符与其编码值的一种机制,不同的代码页支持不同的字符集,正确选择和配置代码页对于确保文本数据的准确显示至关重要。在多语言环境下,合理运用字符集和代码页能够有效避免字符编码冲突,提升用户体验。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 本文探讨了ACE定时器在高级应用场景中的优化策略。通过实例分析,详细介绍了如何实现每秒打印一行的功能,并对定时器的启动和停止进行了封装,提供了高效的代码示例。此外,文章还深入讨论了定时器在高并发环境下的性能优化方法,为开发者提供了实用的参考。 ... [详细]
  • $apply() 方法允许从 AngularJS 框架外部触发表达式的执行,确保其在 AngularJS 的上下文中运行。例如,当你使用 `setTimeout()` 或者集成第三方库时,可以通过调用 `$apply()` 来确保事件更新能够被 AngularJS 检测到并触发脏检查机制,从而实现数据的双向绑定。这一过程不仅保证了数据的一致性,还提升了应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了在CentOS 7上构建DNS解析服务器的步骤与配置方法。DNS系统不仅负责将主机名(域名)转换为相应的IP地址(正向解析),还能够根据IP地址反查主机名(反向解析)。此外,文章还探讨了不同类型的DNS服务器,如缓存域名服务器的作用和配置要点。通过本指南,读者可以全面了解并成功搭建一个高效稳定的DNS解析环境。 ... [详细]
  • Python 并发编程进阶:从初学者到高手的进程与模块开发指南
    Python 并发编程进阶:从初学者到高手的进程与模块开发指南 ... [详细]
  • 微软发布紧急安全更新,所有Windows 10版本均面临影响!
    微软于周五紧急发布了两项安全更新,旨在解决Windows 10所有版本中Windows Codecs库和Visual Studio Code应用存在的安全隐患。此次更新是继本周初发布的月度例行安全补丁之外的额外措施,凸显了这些问题的紧迫性和重要性。这些漏洞可能被攻击者利用,导致系统权限提升或远程代码执行等严重后果。建议用户尽快安装更新,以确保系统的安全性。 ... [详细]
author-avatar
love留着对她说吧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有