返回顶部
首页 > 资讯 > 数据库 >mysql server配置如何优化
  • 603
分享到

mysql server配置如何优化

2024-04-02 19:04:59 603人浏览 八月长安
摘要

小编给大家分享一下mySQL Server配置如何优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在这之前,我们需要掌握以下方

小编给大家分享一下mySQL Server配置如何优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!


在这之前,我们需要掌握以下方法:

查看Mysql状态及变量的方法:
mysql> show status ——显示状态信息(扩展show status like XXX)
Mysql> show variables ——显示系统变量(扩展show variables like XXX)
Mysql> show innodb status ——显示InnoDB存储引擎的状态
shell> admin variables -u username -p passWord——显示系统变量
Shell> mysqladmin extended-status -u username -p password——显示状态信息
查看状态变量及帮助:
Shell> mysqld --verbose --help [|more #逐行显示]

首先,让我们看看有关请求连接的变量:
为了能适应更多数据库应用用户,MySql提供了连接(客户端)变量,以对不同性质的用户群体提供不同的解决方案,笔者就max_connections,back_log做了一些细结,如下:

max_connections是指MySql的最大连接数,如果服务器并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySql会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过conn%通配符查看当前状态的连接数量,以定夺该值的大小。

back_log是要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。如果期望在一个短时间内有很多连接,你需要增加它。也就是说,如果MySql的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。另外,这值(back_log)限于您的操作系统对到来的tcp/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制(可以检查你的OS文档找出这个变量的最大值),试图设定back_log高于你的操作系统的限制将是无效的。

优化了MySql的连接后属性后,我们需要看看缓冲区变量:

使用MySql数据库存储大量数据(或使用复杂查询)时,我们应该考虑MySql的内存配置。如果配置MySQL服务器使用太少的内存会导致性能不是最优的;如果配置了太多的内存则会导致崩溃,无法执行查询或者导致交换操作严重变慢。在现在的32位平台下,仍有可能把所有的地址空间都用完,因此需要审视。

计算内存使用的秘诀公式就能相对地解决这一部分问题。不过,如今这个公式已经很复杂了,更重要的是,通过它计算得到的值只是“理论可能”并不是真正消耗的值。事实上,有8GB内存的常规服务器经常能运行到最大的理论值(100GB甚至更高)。此外,你轻易不会使用到“超额因素”(它实际上依赖于应用以及配置)。一些应用可能需要理论内存的10%而有些仅需1%。
那么,我们可以做什么呢?

来看看那些在启动时就需要分配并且总是存在的全局缓冲吧!

全局缓冲:
key_buffer_size, innodb_buffer_pool_size, innodb_additional_mem_pool_size,innodb_log_buffer_size, query_cache_size

注:如果你大量地使用MyISAM表,那么你也可以增加操作系统的缓存空间使得MySQL也能用得着。把这些也都加到操作系统和应用程序所需的内存值之中,可能需要增加32MB甚至更多的内存给MySQL服务器代码以及各种不同的小静态缓冲。这些就是你需要考虑的在MySQL服务器启动时所需的内存。其他剩下的内存用于连接。

key_buffer_size决定索引处理的速度,尤其是索引读的速度。一般我们设为16M,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用key_read%获得用来显示状态数据)。key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

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

innodb_additional_mem_pool_size指定InnoDB用来存储数据字典和其他内部数据结构的内存池大小。缺省值是1M。通常不用太大,只要够用就行,应该与表结构的复杂度有关系。如果不够用,MySQL会在错误日志中写入一条警告信息。

innodb_log_buffer_size指定InnoDB用来存储日志数据的缓存大小,如果您的表操作中包含大量并发事务(或大规模事务),并且在事务提交前要求记录日志文件,请尽量调高此项值,以提高日志效率。

query_cache_size是MySql的查询缓冲大小。(从4.0.1开始,MySQL提供了查询缓冲机制)使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。通过检查状态值’Qcache_%’,可以知道query_cache_size设置是否合理:如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,如果Qcache_hits的值也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。

除了全局缓冲,MySql还会为每个连接发放连接缓冲。

连接缓冲:
每个连接到MySQL服务器的线程都需要有自己的缓冲。大概需要立刻分配256K,甚至在线程空闲时,它们使用默认的线程堆栈,网络缓存等。事务开始之后,则需要增加更多的空间。运行较小的查询可能仅给指定的线程增加少量的内存消耗,然而如果对数据表做复杂的操作例如扫描、排序或者需要临时表,则需分配大约read_buffer_size,sort_buffer_size,read_rnd_buffer_size,tmp_table_size大小的内存空间。不过它们只是在需要的时候才分配,并且在那些操作做完之后就释放了。有的是立刻分配成单独的组块。tmp_table_size 可能高达MySQL所能分配给这个操作的最大内存空间了。注意,这里需要考虑的不只有一点 —— 可能会分配多个同一种类型的缓存,例如用来处理子查询。一些特殊的查询的内存使用量可能更大——如果在MyISAM表上做成批的插入时需要分配 bulk_insert_buffer_size 大小的内存;执行 ALTER TABLE, OPTIMIZE TABLE, REPaiR TABLE 命令时需要分配 myisam_sort_buffer_size 大小的内存。

read_buffer_size是MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。

sort_buffer_size是MySql执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。如果不能,可以尝试增加sort_buffer_size变量的大小。

read_rnd_buffer_size是MySql的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。

tmp_table_size是MySql的heap(堆积)表缓冲大小。所有联合在一个DML指令内完成,并且大多数联合甚至可以不用临时表即可以完成。大多数临时表是基于内存的(HEAP)表。具有大的记录长度的临时表 (所有列的长度的和)或包含BLOB列的表存储在硬盘上。如果某个内部heap(堆积)表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。还可以通过设置tmp_table_size选项来增加临时表的大小。也就是说,如果调高该值,MySql同时将增加heap表的大小,可达到提高联接查询速度的效果。

当我们设置好了缓冲区大小之后,再来看看:

table_cache所有线程打开的表的数目,增大该值可以增加mysqld需要的文件描述符的数量。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值’Open_tables’和’Opened_tables’,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用’Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。

做了以上方面的调优设置之后,MySql应该基本能满足您需求

以上是“mysql server配置如何优化”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql server配置如何优化

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

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

猜你喜欢
  • mysql server配置如何优化
    小编给大家分享一下mysql server配置如何优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在这之前,我们需要掌握以下方...
    99+
    2024-04-02
  • mysql中索引配置如何优化
    这篇文章将为大家详细讲解有关mysql中索引配置如何优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 2     索引及查询优...
    99+
    2024-04-02
  • mysql配置优化
    1、innodb_flush_log_at_trx_commit :事务日志提交策略即提交事务的时候将 redo 日志写入磁盘中的时机。 等于0:等于0表示每次提交事务时将数据提交到mysql redo log buffer 中即表示操...
    99+
    2014-09-02
    mysql配置优化
  • MySQL参数配置优化
    max_connections Variable Scope:      Global Dynamic Variable:  Yes Default:   ...
    99+
    2024-04-02
  • 如何配置Yum源优化
    本篇内容主要讲解“如何配置Yum源优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何配置Yum源优化”吧!设置163源网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本...
    99+
    2023-06-10
  • 如何配置优化的sysctl.conf
    本篇内容介绍了“如何配置优化的sysctl.conf”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近找了个不错的sysctl.conf的优...
    99+
    2023-06-13
  • mysql community server 8.0.12如何安装配置
    这篇文章将为大家详细讲解有关mysql community server 8.0.12如何安装配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下载本例为:MySQL C...
    99+
    2024-04-02
  • MySQL 高并发配置优化
    最近在搞一个报表系统,不是很负责,但是就是数据量比较大,单次写入上万条数据,加上在同一个事务里面,部署到linux服务器后,发现特别慢,后面发现mysql安装后没有优化配置文件,导致写入特别慢。服务器my...
    99+
    2024-04-02
  • vue-cli如何优化webpack配置
    小编给大家分享一下vue-cli如何优化webpack配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目采用的是vue全家桶...
    99+
    2024-04-02
  • vue.config.js如何打包优化配置
    这篇文章主要介绍了vue.config.js如何打包优化配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。未优化之前的 //感觉太大了 抬它优化之后的这些是必要的下载cons...
    99+
    2023-06-14
  • MySQL中如何优化4G内存服务器配置
    这篇文章主要介绍了MySQL中如何优化4G内存服务器配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 公司网...
    99+
    2024-04-02
  • VPS服务器配置如何优化
    VPS服务器配置优化的方法:1、进入cd /var/目录增加一个swap交换文件;2、修改系统默认的美国东部时间,改为linux时区为东八区。具体内容如下:1、vps只有一个根分区,没有swap交换分区。vps内存不大,于是,为其增加了一个...
    99+
    2024-04-02
  • centos7-mysql-cnf配置文件优化
    mysql优化最常见的就是my.cnf文件配置优化限制线程,访问等等 max_connections = 151   每个版本的限制不一样,限制最多连接数,并发访问多,可以适当...
    99+
    2024-04-02
  • mysql性能优化配置总结
        看了一些优化mysql运维的一些书籍,在此记录总结下:进入mysql客户端输入以下sql:1、连接设置show variables lik...
    99+
    2024-04-02
  • MYSQL配置参数优化详解
    MySQL参数优化对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的观察以及调试,才有可能得到最佳的效果。 1)连接请求的变量 1、max_...
    99+
    2024-04-02
  • MySQL优化之二:My SQL Server性能优化
    1 安装优化一般说来,系统功能越多越复杂,性能就会越差。因此在编译安装MySQL时,仅安装需要的功能模块。如存储引擎、需要的字符集等,让系统尽可能的简单。2 日志设置优化由于日志记录直接带来的性能损耗就是数...
    99+
    2024-04-02
  • 如何在SQL Server中优化Tempdb
    SQL Server默认有四个数据库系统,其中一个称为tempdb。 tempdb用于许多SQL操作,包括创建用户定义的临时对象,内部临时对象和版本存储,以及其他功能,如联机重新索引,多个活动记录...
    99+
    2024-04-02
  • 如何优化SQL Server服务器
    如何优化SQL Server服务器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  1.数据和日志文件分开存放在不同磁盘上  数据文件和日志文...
    99+
    2024-04-02
  • 如何实现MySQL底层优化:连接池的优化与配置参数调整
    如何实现MySQL底层优化:连接池的优化与配置参数调整引言MySQL是一种常用的开源数据库管理系统,它的性能直接影响到系统的稳定性和响应速度。而连接池是一种重要的优化手段,可以有效地减少系统连接数据库的开销。本文将介绍如何对MySQL连接池...
    99+
    2023-11-08
    MySQL 连接池 参数调整
  • 如何正确配置和优化Windows Vista
    3月13日消息,据国外媒体报道,关于Vista的使用正在热烈的讨论中,你是否已经切身体验   配置和优化Vista需要注意的事项:   1. 配置Vista最好在干净的系统中进行。   2. 内存越大越好。如果增加内存,...
    99+
    2023-05-23
    Windows Vista
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作