扬州城市论坛 百科 MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解、MySQL性能优化

my . ini(Linux系统下的my.cnf),mysql服务器启动时会读取这个文件,并设置相关的运行环境参数。

My.ini分为两部分:客户端部分和服务器部分。

客户端部分用于配置MySQL客户端参数。

要查看配置参数,可以使用以下命令:

显示类似“%innodb%”的变量;#检查innodb的相关配置参数

显示类似“%innodb%”的状态;#检查与innodb相关的运行时参数(例如当前打开的表的数量和当前打开的表的数量)

显示全局状态,如“打开的%个表”;#检查全局运行时参数,全局统计当前mysql服务器中运行的所有数据库实例。如果没有global,则只计算当前数据库实例。

1、客户部分

[客户]

Port=3306 #设置mysql客户端连接到服务器时使用的默认端口。

[mysql]

设置mysql客户端的默认字符集

2、服务器部分

[mysqld]

port=3306 # MySQL服务器默认监听的TCP/IP端口。

basedir=' c:/program files/MySQL/MySQL server 5.5/' #基准路径,其他路径都是相对于该路径的。

datadir=' c:/program files/MySQL/MySQL server 5.5/data ' # MySQL数据库文件所在的目录

Character-set-server=latin1 #服务器使用的默认字符集是8位编码的latin1字符集。

Default-storage-engine=INNODB #创建新表时将使用的默认存储引擎

SQL-mode=' strict _ trans _ tables,no _ auto _ create _ user,no _ engine _ substitution' # SQL模式是严格模式

max _ connections=100 # MySQL MySQL服务器支持的最大并发连接数(用户数)。但是,其中一个连接将始终保留给管理员以超级权限登录,即使连接数达到最大限制。如果设置过小,用户较多,往往会出现“连接数过多”的错误。

Query_cache_size=0 #查询缓存大小,用于缓存选择查询结果。如果有很多SELECT查询返回相同的查询结果,并且很少更改表,可以将query_cache_size设置为大于0,这样可以大大提高查询效率。如果表格数据变化频繁,不要用这个,会适得其反。

Table_cache=256 #该参数在5.1.3以后的版本中称为table_open_cache,用于设置表缓存的数量。因为每个客户端连接将访问至少一个表,所以该参数的值与max_connections相关。当一个连接访问一个表时,MySQL将检查当前缓存的表的数量。如果表已经在缓存中打开了,就直接访问缓存中的表,加快了查询速度;如果该表没有被缓存,则当前表将被添加到缓存中并被查询。在缓存之前,table_cache用于限制缓存表的最大数量:如果当前缓存的表没有达到table_cache,则添加新表;如果已经达到这个值,MySQL会根据缓存表的上次查询时间和查询速率的规则释放之前的缓存。

Tmp_table_size=34M #内存中每个临时表的最大允许大小。如果临时表的大小超过该值,临时表将自动变成基于磁盘的表。

Thread_cache_size=8 #缓存线程的最大数量。当客户端连接断开时,如果客户端连接的总数小于该值,则处理客户端任务的线程被放回缓存中。在高并发的情况下,如果设置的值太小,会频繁创建很多线程,线程创建的开销会变大,查询效率也会降低。一般来说,如果应用端有很好的多线程处理,这个参数对性能的提升不会很大。

# MyISAM相关参数

myisam _ max _ sort _ file _ size=100g #重建索引时MySQL允许的最大临时文件大小

myisam_sort_buffer_size=68M

Key _ Buffer _ size=54M # Key Buffer size,用于缓存MyISAM表的索引块。确定数据库索引处理(尤其是索引读取)的速度。

Read_buffer_size=64K #用于MyISAM表的全表扫描的缓冲区大小。为每个线程分配(假设执行了全表扫描)。在查询排序时,MySql会先扫描缓冲区,避免磁盘搜索,提高查询速度。如果需要对大量数据进行排序,可以适当增加这个值。但是MySql会为每个客户连接释放这个缓冲空间,所以要尽可能适当设置,避免过多的内存开销。

读取缓冲区大小=256K

Sort_buffer_size=256k #连接级别参数(为每个线程配置),500个线程将消耗500*256K sort _ buffer _ size。

# InnoDB相关参数

innodb _ additional _ mem _ pool _ size=3m # innodb用于存储元数据信息的内存池大小一般不需要修改。

InnoDB _ flush _ log _ at _ Trx _ commit=1 #事务相关参数。如果值为1,innodb将在每次提交时将事务日志写入磁盘(磁盘IO消耗很多),从而确保完整的ACID特征。如果设置为0,则表示事务日志写入内存日志和内存日志写入磁盘的频率为每秒一次。如果它被设置为2,这意味着事务日志在每次提交时被写入内存日志,但是内存日志每秒被写入磁盘一次。

innodb _ log _ buffer _ size=2m # innodb日志数据缓冲区大小。如果缓冲区已满,缓冲区中的日志数据将被写入磁盘(刷新)。一般情况下,磁盘每秒至少会写一次,所以没有必要设置得太大,即使是长事务。

innodb _ buffer _ pool _ size=105m # innodb使用缓冲池来缓存索引和行数据。该值设置得越大,磁盘IO就越少。通常,该值设置为物理内存的80%。

InnoDB_log_file_size=53M #每个InnoDB事务日志的大小。一般设置为innodb_buffer_pool_size的25%到100%。

innodb _ thread _ concurrency=9 # innodb内核中并发线程的最大数量。

在Apache、php、MySQL的架构中,MySQL对性能的影响最大,也是关键的核心部分。为了Discuz!论坛计划也是如此。MySQL设置是否合理优化,直接影响论坛的速度和承载量!同时,MySQL也是优化最难的部分,不仅需要了解一些MySQL专业知识,还需要长期的观察和统计,根据经验判断,然后设置合理的参数。让我们来看看MySQL优化的一些基础知识。MySQL的优化分为两部分,一是服务器物理硬件的优化,二是MySQL本身(my.cnf)的优化。

首先,服务器硬件对MySQL性能的影响

磁盘寻道功能(磁盘I/O)。以现在的高速SCSI硬盘(7200转)为例。这种硬盘理论上每秒寻道7200次,是物理特性决定的。没有办法改变。MySQL每秒都在进行大量复杂的查询操作,对磁盘的读写量可想而知。因此,一般认为磁盘I/O是制约MySQL性能的最大因素之一。对于日均访问超过100万PV的Discuz!论坛,由于磁盘I/O的限制,MySQL的性能会很低!要解决这个约束,可以考虑以下解决方案:使用RAID-0 1磁盘阵列,注意不要尝试RAID-5,MySQL在RAID-5磁盘阵列上的效率不会像你想象的那么快。

CPU对于mysql应用,建议使用S.M.P架构的多路对称CPU。例如,可以使用两个英特尔至强3.6GHz CPUs。现在,我更喜欢使用4U服务器作为数据库服务器,而不仅仅是MySQL。

物理内存对于使用MySQL的数据库服务器,建议服务器内存不要小于2GB,建议使用4GB以上的物理内存。但是内存对于现在的服务器来说可以说是一个可以忽略的问题,高端服务器的内存在工作中基本都超过16G。

二、MySQL自身因素解决了上面的服务器硬件限制之后,我们再来看看MySQL自身的优化是如何工作的。MySQL本身的优化主要是对其配置文件my.cnf中的参数进行优化调整,下面是一些对性能影响较大的参数。由于my.cnf文件的优化设置与服务器硬件配置密切相关,我们指定一个假设的服务器硬件环境:CPU: 2颗英特尔至强2.4GHz内存:4GB DDR硬盘:SCSI 73GB(很常见的2U服务器)。

下面,我们根据上面的硬件配置结合一个优化后的my.cnf进行说明:

#vim /etc/my.cnf下面只列出my.cnf文件中段落[mysqld]的内容,其他段落的内容对MySQL的运行性能影响不大,我们就忽略不计吧。

[mysqld]

端口=3306

serverid=1

socket=/tmp/mysql.sock

跳跃锁定

#避免MySQL的外部锁定,降低错误概率,增强稳定性。

跳过名称解析

#禁止MySQL解析外部连接。使用这个选项可以减少MySQL解析DNS的时间。但是需要注意的是,如果开启了这个选项,所有的远程主机连接授权都必须使用IP地址,否则MySQL将无法正常处理连接请求!

back_log=384

#back_log参数的值表示在MySQL暂时停止响应新请求之前,短时间内堆栈中可以存储多少请求。如果系统在短时间内有许多连接,您需要增加该参数的值,该参数指定传入TCP/IP连接的监听队列的大小。不同的操作系统对队列大小有自己的限制。试图将back_log设置得高于操作系统的限制将是无效的。默认值为50。对于Linux系统,建议将其设置为小于512的整数。

key_buffer_size=256M

#key_buffer_size指定用于索引的缓冲区大小。增加它可以获得更好的索引处理性能。对于内存约为4GB的服务器,该参数可以设置为256M或384M。注意:将该参数设置得太大会降低服务器的整体效率!

最大允许数据包=4M

线程堆栈=256K

table_cache=128K

排序缓冲区大小=6M

#对查询进行排序时可以使用的缓冲区大小。注意:对应于该参数的分配内存是每个连接独占的。如果有100个连接,实际分配的总排序缓冲区大小为100 6=600 MB。因此,建议使用4GB内存的服务器。

本文来自网络,不代表本站立场,转载请注明出处:https://baike.yzcslt.com/n/a5856.html

MySQL配置文件mysql.ini参数详解、MySQL性能优化

扬州城市论坛后续将为您提供丰富、全面的关于MySQL配置文件mysql.ini参数详解、MySQL性能优化内容,让您第一时间了解到关于MySQL配置文件mysql.ini参数详解、MySQL性能优化的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。