只想知道 发表于 2015-1-16 22:13:09

MYSQL网站制作之my.cnf文件:my.cnf参数设置

如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。</p>PS:本设置文件针对DellR710,双至强E5620、16G内存的硬件设置。CentOS5.664位体系,MySQL5.5.x不乱版。合用于日IP50-100w,PV100-300w的站点,次要利用InnoDB存储引擎。其他使用情况请依据实践情形来设置优化。
#以下选项会被MySQL客户端使用读取。
#注重只要MySQL附带的客户端使用程序包管能够读取这段内容。
#假如你想你本人的MySQL使用程序猎取这些值。
#必要在MySQL客户端库初始化的时分指定这些选项。
#

#password=
port=@MYSQL_TCP_PORT@
socket=@MYSQL_UNIX_ADDR@
#***使用定制选项***
#
#MySQL服务端
#

#一样平常设置选项
port=@MYSQL_TCP_PORT@
socket=@MYSQL_UNIX_ADDR@
#back_log是操纵体系在监听行列中所能坚持的毗连数,
#行列保留了在MySQL毗连办理器线程处置之前的毗连.
#假如你有十分高的毗连率而且呈现”connectionrefused”报错,
#你就应当增添此处的值.
#反省你的操纵体系文档来猎取这个变量的最年夜值.
#假如将back_log设定到比你操纵体系限定更高的值,将会没无效果
back_log=300
#不在TCP/IP端口长进行监听.
#假如一切的历程都是在统一台服务器毗连到当地的mysqld,
#如许设置将是加强平安的办法
#一切mysqld的毗连都是经由过程Unixsockets大概定名管道举行的.
#注重在windows下假如没有翻开定名管道选项而只是用此项
#(经由过程“enable-named-pipe”选项)将会招致mysql服务没有任何感化!
#skip-networking
#MySQL服务所同意的同时会话数的下限
#个中一个毗连将被SUPER权限保存作为办理员登录.
#即使已到达了毗连数的下限.
max_connections=3000
#每一个客户端毗连最年夜的毛病同意数目,假如到达了此限定.
#这个客户端将会被MySQL服务制止直到实行了”FLUSHHOSTS”大概服务重启
#不法的暗码和其他在链接时的毛病会增添此值.
#检察“Aborted_connects”形态来猎取全局计数器.
max_connect_errors=30
#一切线程所翻开表的数目.
#增添此值就增添了mysqld所必要的文件形貌符的数目
#如许你必要确认在中“open-files-limit”变量设置翻开文件数目同意最少4096
table_cache=4096
#同意内部文件级其余锁.翻开文件锁会对功能形成负面影响
#以是只要在你在一样的文件上运转多个数据库实例时才利用此选项(注重仍会有其他束缚!)
#大概你在文件层面上利用了其他一些软件依附来锁定MyISAM表
#external-locking
#服务所能处置的哀求包的最年夜巨细和服务所能处置的最年夜的哀求巨细(当与年夜的BLOB字段一同事情时相称需要)
#每一个毗连自力的巨细.巨细静态增添
max_allowed_packet=32M
#在一个事件中binlog为了纪录SQL形态所持有的cache巨细
#假如你常常利用年夜的,多声明的事件,你能够增添此值来猎取更年夜的功能.
#一切处置务来的形态都将被缓冲在binlog缓冲中然后在提交后一次性写进到binlog中
#假如事件比此值年夜,会利用磁盘上的一时文件来替换.
#此缓冲在每一个毗连的事件第一次更新形态时被创立
binlog_cache_size=4M
#自力的内存表所同意的最年夜容量.
#此选项为了避免不测创立一个超年夜的内存表招致永尽一切的内存资本.
max_heap_table_size=128M
#排序缓冲被用来处置相似ORDERBY和GROUPBY行列所引发的排序
#假如排序后的数据没法放进排序缓冲,
#一个用来替换的基于磁盘的兼并分类会被利用
#检察“Sort_merge_passes”形态变量.
#在排序产生时由每一个线程分派
sort_buffer_size=16M
#此缓冲被利用来优化全团结(fullJOINs不带索引的团结).
#相似的团结在极年夜多半情形下有十分糟的功能体现,
#可是将此值设年夜可以加重功能影响.
#经由过程“Select_full_join”形态变量检察全团结的数目
#当全团结产生时,在每一个线程平分配
join_buffer_size=16M
#我们在cache中保存几线程用于重用
#当一个客户端断开毗连后,假如cache中的线程还少于thread_cache_size,
#则客户端线程被放进cache中.
#这能够在你必要大批新毗连的时分极年夜的削减线程创立的开支
#(一样平常来讲假如你有好的线程模子的话,这不会有分明的功能提拔.)
thread_cache_size=16
#此同意使用程序赐与线程体系一个提醒在统一工夫赐与巴望被运转的线程的数目.
#此值只关于撑持thread_concurrency()函数的体系成心义(比方SunSolaris).
#你可能够实验利用*(2..4)来作为thread_concurrency的值
thread_concurrency=8
#查询缓冲常被用来缓冲SELECT的了局而且鄙人一次一样查询的时分不再实行间接前往了局.
#翻开查询缓冲能够极年夜的进步服务器速率,假如你有大批的不异的查询而且很少修正表.
#检察“Qcache_lowmem_prunes”形态变量来反省是不是以后值关于你的负载来讲是不是充足高.
#注重:在你表常常变更的情形下大概假如你的查询原文每次都分歧,
#查询缓冲大概引发功能下落而不是功能提拔.
query_cache_size=128M
#只要小于此设定值的了局才会被缓冲
#此设置用来回护查询缓冲,避免一个极年夜的了局集将其他一切的查询了局都掩盖.
query_cache_limit=4M
#被全文检索索引的最小的字长.
#你大概但愿削减它,假如你必要搜刮更短字的时分.
#注重在你修正此值以后,
#你必要重修你的FULLTEXT索引
ft_min_word_len=8
#假如你的体系撑持memlock()函数,你大概但愿翻开此选项用以让运转中的mysql在在内存高度严重的时分,数据在内存中坚持锁定而且避免大概被swappingout
#此选项关于功能无益
#memlock
#当创立新表时作为默许利用的表范例,
#假如在创立暗示没有出格实行表范例,将会利用此值
default_table_type=MYISAM
#线程利用的堆巨细.此容量的内存在每次毗连时被预留.
#MySQL自己常不会必要凌驾64K的内存
#假如你利用你本人的必要大批堆的UDF函数
#大概你的操纵体系关于某些操纵必要更多的堆,
#你大概必要将其设置的更高一点.
thread_stack=512K
#设定默许的事件断绝级别.可用的级别以下:
#READ-UNCOMMITTED,READ-COMMITTED,REPEATABLE-READ,SERIALIZABLE
transaction_isolation=REPEATABLE-READ
#外部(内存中)一时表的最年夜巨细
#假如一个表增加到比此值更年夜,将会主动转换为基于磁盘的表.
#此限定是针对单个表的,而不是总和.
tmp_table_size=128M
#翻开二进制日记功效.
#在复制(replication)设置中,作为MASTER主服务器必需翻开此项
#假如你必要从你最初的备份中做基于工夫点的恢复,你也一样必要二进制日记.
log-bin=mysql-bin
#假如你在利用链式从服务器布局的复制形式(A->B->C),
#你必要在服务器B上翻开此项.
#此选项翻开在从线程上重做过的更新的日记,
#并将其写进从服务器的二进制日记.
#log_slave_updates
#翻开全查询日记.一切的由服务器吸收到的查询(乃至关于一个毛病语法的查询)
#城市被纪录上去.这关于调试十分有效,在临盆情况中经常封闭此项.
#log
#将告诫打印输入到毛病log文件.假如你关于MySQL有任何成绩
#你应当翻开告诫log而且细心检察毛病日记,查出大概的缘故原由.
#log_warnings
#纪录慢速查询.慢速查询是指损耗了比“long_query_time”界说的更多工夫的查询.
#假如log_long_format被翻开,那些没有利用索引的查询也会被纪录.
#假如你常常增添新查询到已有的体系内的话.一样平常来讲这是一个好主张,
log_slow_queries
#一切的利用了比这个工夫(以秒为单元)更多的查询会被以为是慢速查询.
#不要在这里利用”1&Prime;,不然会招致一切的查询,乃至十分快的查询页被纪录上去(因为MySQL今朝工夫的准确度只能到达秒的级别).
long_query_time=6
#在慢速日记中纪录更多的信息.
#一样平常此项最好翻开.
#翻开此项会纪录使得那些没有利用索引的查询也被作为到慢速查询附加到慢速日记里
log_long_format
#此目次被MySQL用来保留一时文件.比方,
#它被用来处置基于磁盘的年夜型排序,和外部排序一样.
#和复杂的一时表.
#假如你不创立十分年夜的一时文件,将其安排到swapfs/tmpfs文件体系上大概对照好
#另外一种选择是你也能够将其安排在自力的磁盘上.
#你可使用”;”来安排多个路径
#他们会依照roud-robin办法被轮询利用.
#tmpdir=/tmp
#***主从复制相干的设置
#独一的服务辨识号,数值位于1到2^32-1之间.
#此值在master和slave上都必要设置.
#假如“master-host”没有被设置,则默许为1,可是假如疏忽此选项,MySQL不会作为master失效.
server-id=1
#复制的Slave(往失落master段的正文来使其失效)
#
#为了设置此主机作为复制的slave服务器,你能够选择两种办法:
#
#1)利用CHANGEMASTERTO命令(在我们的手册中有完全形貌)-
#语法以下:
#
#CHANGEMASTERTOMASTER_HOST=,MASTER_PORT=,
#MASTER_USER=,MASTER_PASSWORD=;
#
#你必要交换失落,,等被尖括号包抄的字段和利用master的端标语交换(默许3306).
#
#例子:
#
#CHANGEMASTERTOMASTER_HOST=’125.564.12.1&prime;,MASTER_PORT=3306,
#MASTER_USER=’joe’,MASTER_PASSWORD=’secret’;
#
#大概
#
#2)设置以下的变量.不管怎样,在你选择这类办法的情形下,然后第一次启动复制(乃至不乐成的情形下,
#比方假如你输出错暗码在master-password字段而且slave没法毗连),
#slave会创立一个master.info文件,而且以后任何关于包括在此文件内的参数的变更城市被疏忽
#而且由master.info文件内的内容掩盖,除非你封闭slave服务,删除master.info而且重启slave服务.
#因为这个缘故原由,你大概不想碰一下的设置(正文失落的)而且利用CHANGEMASTERTO(检察下面)来取代
#
#所必要的独一id号位于2和2^32&ndash;1之间
#(而且和master分歧)
#假如master-host被设置了.则默许值是2
#可是假如省略,则不会失效
#server-id=2
#
#复制布局中的master&ndash;必需
#master-host=
#
#当毗连到master上时slave所用来认证的用户名&ndash;必需
#master-user=
#
#当毗连到master上时slave所用来认证的暗码&ndash;必需
#master-password=
#
#master监听的端口.
#可选&ndash;默许是3306
#master-port=
#使得slave只读.只要用户具有SUPER权限和在下面的slave线程可以修正数据.
#你可使用此项往包管没有使用程序会心外的修正slave而不是master上的数据
#read_only
#***MyISAM相干选项
#关头词缓冲的巨细,一样平常用来缓冲MyISAM表的索引块.
#不要将其设置年夜于你可用内存的30%,
#由于一部份内存一样被OS用来缓冲行数据
#乃至在你其实不利用MyISAM表的情形下,你也必要仍然设置起8-64M内存因为它一样会被外部一时磁盘表利用.
key_buffer_size=128M
#用来做MyISAM表全表扫描的缓冲巨细.
#当全表扫描必要时,在对应线程平分配.
read_buffer_size=8M
#当在排序以后,从一个已排序好的序列中读取行时,行数据将从这个缓冲中读取来避免磁盘寻道.
#假如你增高此值,能够进步良多ORDERBY的功能.
#当必要时由每一个线程分派
read_rnd_buffer_size=64M
#MyISAM利用特别的相似树的cache来使得突发拔出
#(这些拔出是,INSERT…SELECT,INSERT…VALUES(…),(…),…,和LOADDATA
#INFILE)更快.此变量限定每一个历程中缓冲树的字节数.
#设置为0会封闭此优化.
#为了最优化不要将此值设置年夜于“key_buffer_size”.
#当突发拔出被检测到时此缓冲将被分派.
bulk_insert_buffer_size=256M
#此缓冲当MySQL必要在REPAIR,OPTIMIZE,ALTER和LOADDATAINFILE到一个空表中引发重修索引时被分派.
#这在每一个线程中被分派.以是在设置年夜值时必要当心.
myisam_sort_buffer_size=256M
#MySQL重修索引时所同意的最年夜一时文件的巨细(当REPAIR,ALTERTABLE大概LOADDATAINFILE).
#假如文件巨细比此值更年夜,索引会经由过程键值缓冲创立(更慢)
myisam_max_sort_file_size=10G
#假如被用来更快的索引创立索引所利用一时文件年夜于制订的值,那就利用键值缓冲办法.
#这次要用来强迫在年夜表中长字串键往利用慢速的键值缓冲办法来创立索引.
myisam_max_extra_sort_file_size=10G
#假如一个表具有凌驾一个索引,MyISAM能够经由过程并行排序利用凌驾一个线程往修复他们.
#这关于具有多个CPU和大批内存情形的用户,是一个很好的选择.
myisam_repair_threads=1
#主动反省和修复没有得当封闭的MyISAM表.
myisam_recover
#默许封闭Federated
skip-federated
#***BDB相干选项***
#假如你运转的MySQL服务有BDB撑持可是你禁绝备利用的时分利用此选项.这会节俭内存而且大概减速一些事.
skip-bdb
#***INNODB相干选项***
#假如你的MySQL服务包括InnoDB撑持可是其实不盘算利用的话,
#利用此选项会节俭内存和磁盘空间,而且减速某些部分
#skip-innodb
#附加的内存池被InnoDB用来保留metadata信息
#假如InnoDB为此目标必要更多的内存,它会入手下手从OS这里请求内存.
#因为这个操纵在年夜多半古代操纵体系上已充足快,你一样平常不必要修正此值.
#SHOWINNODBSTATUS命令会显现领先利用的数目.
innodb_additional_mem_pool_size=64M
#InnoDB利用一个缓冲池来保留索引和原始数据,不像MyISAM.
#这里你设置越年夜,你在存取内外面数据时所必要的磁盘I/O越少.
#在一个自力利用的数据库服务器上,你能够设置这个变量到服务器物理内存巨细的80%
#不要设置过年夜,不然,因为物理内存的合作大概招致操纵体系的换页平稳.
#注重在32位体系上你每一个历程大概被限定在2-3.5G用户层面内存限定,
#以是不要设置的太高.
innodb_buffer_pool_size=6G
#InnoDB将数据保留在一个大概多个数据文件中成为表空间.
#假如你只要单个逻辑驱动保留你的数据,一个单个的自增文件就充足好了.
#其他情形下.每一个设备一个文件一样平常都是个好的选择.
#你也能够设置InnoDB来利用裸盘分区&ndash;请参考手册来猎取更多相干内容
innodb_data_file_path=ibdata1:10M:autoextend
#设置此选项假如你但愿InnoDB表空间文件被保留在其他分区.
#默许保留在MySQL的datadir中.
#innodb_data_home_dir=
#用来同步IO操纵的IO线程的数目.Thisvalueis
#此值在Unix下被硬编码为4,可是在Windows磁盘I/O大概在一个年夜数值下体现的更好.
innodb_file_io_threads=4
#假如你发明InnoDB表空间破坏,设置此值为一个非零值大概匡助你导出你的表.
#从1入手下手而且增添此值晓得你可以乐成的导出表.
#innodb_force_recovery=1
#在InnoDb中心内的同意线程数目.
#最优值依附于使用程序,硬件和操纵体系的调剂体例.
#太高的值大概招致线程的互斥平稳.
innodb_thread_concurrency=16
#假如设置为1,InnoDB会在每次提交后革新(fsync)事件日记到磁盘上,
#这供应了完全的ACID举动.
#假如你乐意对事件平安折中,而且你正在运转一个小的食品,你能够设置此值到0大概2来削减由事件日记引发的磁盘I/O
#0代表日记只约莫每秒写进日记文件而且日记文件革新到磁盘.
#2代表日记写进日记文件在每次提交后,可是日记文件只要约莫每秒才会革新到磁盘上.
innodb_flush_log_at_trx_commit=2
(申明:假如是游戏服务器,倡议此值设置为2;假如是对数据平安请求极高的使用,倡议设置为1;设置为0功能最高,但假如产生妨碍,数据大概会有丧失的伤害!默许值1的意义是每次事件提交或事件外的指令都必要把日记写进(flush)硬盘,这是很费时的。出格是利用电池供电缓存(Batterybackedupcache)时。设成2关于良多使用,出格是从MyISAM表转过去的是能够的,它的意义是不写进硬盘而是写进体系缓存。日记仍旧会每秒flush到硬盘,以是你一样平常不会丧失凌驾1-2秒的更新。设成0会更快一点,但平安方面对照差,即便MySQL挂了也大概会丧失事件的数据。而值2只会在全部操纵体系挂了时才大概丢数据。)
#减速InnoDB的封闭.这会制止InnoDB在封闭时做全扫除和拔出缓冲兼并.
#这大概极年夜增添关机工夫,可是取而代之的是InnoDB大概鄙人次启动时做这些操纵.
#innodb_fast_shutdown
#用来缓冲日记数据的缓冲区的巨细.
#当此值快满时,InnoDB将必需革新数据到磁盘上.
#因为基础上每秒城市革新一次,以是没有需要将此值设置的太年夜(乃至关于长事件而言)
innodb_log_buffer_size=16M
#在日记组中每一个日记文件的巨细.
#你应当设置日记文件总合巨细到你缓冲池巨细的25%~100%
#来制止在日记文件覆写上不用要的缓冲池革新举动.
#不管怎样,请注重一个年夜的日记文件巨细会增添恢复历程所必要的工夫.
innodb_log_file_size=512M
#在日记组中的文件总数.
#一般来讲2~3是对照好的.
innodb_log_files_in_group=3
#InnoDB的日记文件地点地位.默许是MySQL的datadir.
#你能够将其指定到一个自力的硬盘上大概一个RAID1卷下去进步其功能
#innodb_log_group_home_dir
#在InnoDB缓冲池中最年夜同意的脏页面的比例.
#假如到达限额,InnoDB会入手下手革新他们避免他们妨害到洁净数据页面.
#这是一个软限定,不被包管相对实行.
innodb_max_dirty_pages_pct=90
#InnoDB用来革新日记的办法.
#表空间老是利用两重写进革新办法
#默许值是“fdatasync”,另外一个是“O_DSYNC”.
#innodb_flush_method=O_DSYNC
#在被回滚前,一个InnoDB的事件应当守候一个锁被同意多久.
#InnoDB在其具有的锁表中主动检测事件逝世锁而且回滚事件.
#假如你利用LOCKTABLES指令,大概在一样事件中利用除InnoDB之外的其他事件平安的存储引擎
#那末一个逝世锁大概产生而InnoDB没法注重到.
#这类情形下这个timeout值关于办理这类成绩就十分有匡助.
innodb_lock_wait_timeout=120

#不要在将内存中的全部了局写进磁盘之前缓存.在导出十分伟大的表时必要此项
quick
max_allowed_packet=32M

no-auto-rehash
#仅仅同意利用键值的UPDATEs和DELETEs.
#safe-updates

key_buffer=2048M
sort_buffer_size=2048M
read_buffer=32M
write_buffer=32M

key_buffer=2048M
sort_buffer_size=2048M
read_buffer=32M
write_buffer=32M

interactive-timeout

#增添每一个历程的可翻开文件数目.
#告诫:确认你已将全体系限定设定的充足高!
#翻开大批表必要将此值设年夜
open-files-limit=8192

关于这个理由我把它放在最后一位。在很多业界专家中有一个相当一致的观点:MySQL不能很好的扩展。关于这点可能有很大的分歧,争论的焦点主要集中于水平可扩展性和垂直可扩展性上。MySQL则更倾向于垂直可扩展性。

谁可相欹 发表于 2015-1-18 23:24:43

从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。

admin 发表于 2015-1-24 12:40:05

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

莫相离 发表于 2015-2-1 15:00:04

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

蒙在股里 发表于 2015-2-7 07:01:46

其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。

透明 发表于 2015-2-20 23:55:01

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.

再现理想 发表于 2015-3-6 19:20:59

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

若天明 发表于 2015-3-13 06:25:07

入门没那么困难,精通没那么容易
页: [1]
查看完整版本: MYSQL网站制作之my.cnf文件:my.cnf参数设置