类型:数据库类大小:1.7M语言:英语评分:6.6标签:立即下载my . ini(Linux系统中的my.cnf),当mysql服务器启动时,会读取此文件并设置相关运行环境参数。
My.ini分为两部分:客户端部分和服务器部分。客户端部分用于配置MySQL客户端参数。要查看配置参数,请使用以下命令:
显示像“%innodb%”这样的变量;#检查innodb相关配置参数是否显示类似“%innodb%”的状态;#检查innodb相关的运行时参数(如当前打开的表的数量和当前打开的表的数量)显示全局状态,如“打开% tables”;#检查全局运行时参数,并对当前mysql服务器中运行的所有数据库实例进行全局计数。如果没有全局,将只计算当前数据库实例。
1.客户端部分[客户端]端口=3306 #设置mysql客户端连接到服务器时使用的默认端口[mysql]默认-字符集=utf8 #设置mysql客户端的默认字符集
2、服务器部分
[[mysql]端口=3306 # mysql默认情况下MySQL服务器监听的TCP/IP端口basedir=' c :/程序文件/MySQL/MySQL server 5.5/'#引用路径。其他路径相对于此路径:datadir=' c :/program files/MySQL/MySQL server 5.5/data ' # MySQL数据库文件所在的目录,字符集-服务器=latin1 #服务器使用的默认字符集是8位编码的latin1字符集。默认存储引擎=INNODB #创建新表时使用的默认存储引擎是SQL-mode=' strict _ trans _ tables,no _ auto _ create _ user。NO _ ENGINE _ replacement ' # SQL模式为严格模式max _ connections=100 # MySQL MySQL服务器支持的最大并发连接数(用户数)。但是,其中一个连接始终保留给管理员以超级权限登录,即使连接数达到最大限制。如果设置太小,用户多,经常会出现“连接太多”的错误。Query_cache_size=0 #查询缓存大小,用于缓存SELECT查询结果。如果返回相同查询结果的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=the内存中每个临时表允许的最大大小。如果临时表的大小超过此值,临时表将自动成为基于磁盘的表。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会为每个客户连接分配这个缓冲空间,因此应该适当设置该值,以避免过多的内存开销。read _ rnd _ buffer _ size=256 kport _ 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 innodb _ thread _ concurrency=9 # innodb内核最大并发线程数的25%到100%。
在Apache、PHP、MySQL架构中,MySQL对性能的影响最大,也是关键的核心部分。为了迪库兹!论坛项目也是如此。MySQL设置是否合理优化,将直接影响论坛的速度和承载能力!同时,MySQL也是优化中最难的部分,不仅需要了解一些MySQL专业知识,还需要长时间观察统计并根据经验判断,然后设置合理的参数。让我们来看看MySQL优化的一些基础。MySQL的优化分为两部分,一部分是服务器物理硬件的优化,另一部分是MySQL本身(my.cnf)的优化。1.服务器硬件对MySQL性能的影响磁盘寻道能力(磁盘I/O)。以目前的高速SCSI硬盘(7200 rpm)为例,这款硬盘理论上每秒寻道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的CPU,现在我推荐使用一个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]port=3306 server id=1 socket=/tmp/mysql . sockskip-lock #避免了MySQL的外部锁定,降低了出错概率,增强了稳定性。跳过名称解析#禁止MySQL对外部连接进行DNS解析。使用这个选项可以消除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。注意:参数值设置过大,会降低服务器的整体效率!max _ allowed _ packet=4m thread _ stack=256k table _ cache=128k sort _ buffer _ size=6m #排序查询时可以使用的缓冲区大小。
注意:对应于此参数的分配内存是每个连接独占的。如果有100个连接,实际分配的排序缓冲区的总大小为100 6=600 MB。因此,对于4GB内存的服务器,建议设置6-8M。Read_buffer_size=4M #可用于读取查询操作的缓冲区大小。与sort_buffer_size一样,与此参数对应的已分配内存也是每个连接所独有的。Join_buffer_size=8M #联合查询操作可以使用的缓冲区大小,与sort_buffer_size一样,与此参数对应的已分配内存也是每个连接专有的。myisam _ sort _ buffer _ size=64 table _ cache=512 read _ cache _ size=64 query _ cache _ size=64m #指定MySQL查询缓冲区的大小。在MySQL控制台中可以观察到,如果Qcache_lowmem_prunes的值非常大,则表明缓冲区往往不足;如果Qcache_hits的值非常大,则意味着查询缓冲区的使用非常频繁。如果数值小,会影响效率,可以考虑不使用查询缓冲区;Qcache_free_blocks,如果值很大,则表示缓冲区中有很多碎片。tmp _ table _ size=256 mmax _ connections=768 #指定MySQL允许的最大连接进程数。如果访问论坛时经常出现“连接过多”的错误显示,则需要增加参数值。max _ connect _ errors=10000000 wait _ time out=10 #指定请求的最大连接时间,对于内存约为4GB的服务器,可以设置为5-10。Thread_concurrency=8 #这个参数的值是服务器的逻辑CPU数量*2。在本例中,服务器有2个物理CPU,每个物理CPU支持H.T超线程,因此实际值为4*2=8跳网#。打开此选项,彻底关闭MySQL的TCP/IP连接模式。如果WEB服务器通过远程连接访问MySQL数据库服务器,请不要打开此选项。否则将无法正常连接!Table_cache=1024 #物理内存越大,设置越大。默认值为2402。调整为512-1024,最好innodb _ additional _ mem _ pool _ size=4m #,默认为2m innodb _ flush _ log _ at _ Trx _ commit=1 #,并设置为0,即等到innodb_log_buffer_size满了再统一存储。1 innodb _ log _ buffer _ size=2m默认情况下# 1M innodb _ thread _ concurrency=8 #将其设置为您的服务器CPU拥有的数量。建议默认使用8 key _ buffer _ size=256m,默认使用# 218。调整为128,最佳tmp_table_size=64M #,默认为16M,调整为64-256。read_buffer_size=4M #默认为64K read_rnd_buffer_size=16M #默认为256K sort_buffer_size=32M #默认为256K thread_cache_size=120 #默认值为60 query _ cache _ size=32m。值得注意的是,许多案例需要详细分析。。首先,如果Key_reads太大,my.cnf中的Key_buffer_size应该增加,Key_reads/Key_read_requests至少应该是1/100,越小越好。第二,如果Qcache_lowmem_prunes很大,那么Query_cache_size的值应该增加。