iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >MySQL的调优思路和实际操作
  • 594
分享到

MySQL的调优思路和实际操作

2024-04-02 19:04:59 594人浏览 独家记忆
摘要

这篇文章主要讲解了“Mysql的调优思路和实际操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的调优思路和实际操作”吧! 调优思路: 1.设

这篇文章主要讲解了“Mysql的调优思路和实际操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的调优思路和实际操作”吧!

调优思路:

1.设计与规划--以后再修该很麻烦,估计数据量,使用什么存储引擎

2.数据的应用--怎样取数据,sql语句的优化

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

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

感谢各位的阅读,以上就是“MySQL的调优思路和实际操作”的内容了,经过本文的学习后,相信大家对MySQL的调优思路和实际操作这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL的调优思路和实际操作

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL的调优思路和实际操作
    这篇文章主要讲解了“MySQL的调优思路和实际操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL的调优思路和实际操作”吧! 调优思路: 1.设...
    99+
    2024-04-02
  • MySQL操作日志查看的实际操作步骤
    本篇内容介绍了“MySQL操作日志查看的实际操作步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  对m...
    99+
    2024-04-02
  • SQL调优的思路是什么
    本篇内容介绍了“SQL调优的思路是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般来说,需要关注下面...
    99+
    2024-04-02
  • 【python】接入MySQL实际操作案例
    Python程序接入MySQL数据库 文章目录 Python程序接入MySQL数据库建库建表接入MySQL代码实操插入数据删除数据更新数据查询数据 案例讲解 在 Pyth...
    99+
    2023-10-28
    python mysql 开发语言
  • MSSQL转MySQL数据库的实际操作方式
    这篇文章主要介绍“MSSQL转MySQL数据库的实际操作方式”,在日常操作中,相信很多人在MSSQL转MySQL数据库的实际操作方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • 一次vue项目优化的实际操作记录
    目录前言一、CDN引入二、gzip压缩三、路由懒加载,这种最简单的了就不多说了四、打包不生成map文件五、router上面使用props传参数,导致页面加载时间很长总结前言 项目前端...
    99+
    2024-04-02
  • MySQL查询中分页的思路和优化
    这篇文章主要介绍“MySQL查询中分页的思路和优化”,在日常操作中,相信很多人在MySQL查询中分页的思路和优化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL查询中...
    99+
    2024-04-02
  • Mysql的慢SQL优化思路和规范详解
    目录1、索引优化1.1 建表或加索引时,保证表里互相不存在冗余索引。1.2 复合索引1.3 使用短索引1.4 单个表上的索引个数不能超过8个1.5 在多表join的SQL里,保证被驱动表的连接列上有索引,这样join执行...
    99+
    2023-05-16
    Mysql 慢SQL SQL优化思路 SQL规范
  • MySQL查看表结构的实际操作命令简介
    MySQL中查看表结构的常用操作命令包括:1. DESC命令: 用于查看表的结构信息,包括字段名、类型、长度、默认值等。示例:DES...
    99+
    2023-09-05
    MySQL
  • Python语法的实际应用操作
    本篇内容介绍了“Python语法的实际应用操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 元组用(),list用[],元祖不能修改,主要...
    99+
    2023-06-17
  • Java8中Optional操作的实际应用
    目录简介正文1. Optional是什么2. 没它 VS 有它3. 核心操作4. 应用总结总结简介 目的:Optional的出现主要是为了解决null指针问题,也叫NPE(NullP...
    99+
    2024-04-02
  • Pythonexe的实际操作步骤是怎样的
    Pythonexe的实际操作步骤是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python6. 把c:\python25\dlls目录中的.pyd和.dll文件,复制到...
    99+
    2023-06-17
  • 云服务器实际作用和意义是什么意思
    云服务器是一种虚拟的数据中心服务器,可以让用户通过互联网访问和使用。云服务器的主要目的是为用户提供快速稳定的服务,同时保证数据的安全和访问的方便性。云服务器是由互联网服务提供商提供的一个服务,它的作用和意义在于: 提高服务器资源的利用率...
    99+
    2023-10-26
    意义 作用 服务器
  • Golang RabbitMQ: 实现分布式任务调度的思路和方案
    实现分布式任务调度的思路和方案可以基于RabbitMQ来实现。下面是一个可能的方案:1. 定义任务队列:创建一个RabbitMQ队列...
    99+
    2023-10-10
    Golang
  • 云服务器实际作用和意义是什么意思啊
    云服务器(Cloud Docker)实际上是一种云计算服务,它通过虚拟化技术将大量硬件资源和数据存储在互联网上的云服务器上,为企业和个人用户提供可靠的存储、计算和数据备份等服务,从而提高资源利用率、降低成本和管理难度。 云服务器的出现,不...
    99+
    2023-10-26
    意义 作用 服务器
  • Python配置的实际操作及如何应用
    这篇文章给大家介绍Python配置的实际操作及如何应用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Vim的默认配置对Python支持有限,可以通过安装插件等方法提高在Vim中编写Python程序的效率。<&nb...
    99+
    2023-06-17
  • Python VIM 环境配置的实际操作方法
    本篇内容主要讲解“Python VIM 环境配置的实际操作方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python VIM 环境配置的实际操作方法”吧!1. VIM python 自动补全...
    99+
    2023-06-17
  • MySQL多表联查的实现思路
    目录多表联查场景一对一多对一多对多内连接查询外连接自连接联合查询子查询多表联查场景 一对一 用户与用户信息表:当用户的信息数据过多时,我们可以将其分成两个表分别对应用户基本信息和用户的详情信息。 create table...
    99+
    2023-02-21
    MySQL多表联查有几种方法 MySQL多表联查语句
  • MySQL优化案例的初步思路是什么
    这期内容当中小编将会给大家带来有关MySQL优化案例的初步思路是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 今天想起这件同事处理的一...
    99+
    2024-04-02
  • 队列在PHP与MySQL中的消息分发和任务调度的设计思路和实现方案
    一、引言随着互联网应用规模的不断扩大和用户需求的日益增长,系统的并发处理和任务调度能力成为一个重要的考量因素。而队列是一种常用的解决方案,能够有效地进行消息分发和任务调度。本文将介绍在PHP与MySQL中如何设计和实现队列的消息分发和任务调...
    99+
    2023-10-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作