国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页数据库类MySQL → MySQL配置文件mysql.ini参数详解、MySQL性能优化

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

我要评论 2012/11/28 12:00:34 来源:国语自产精品视频在线看 编辑:zbbingyang.com [ ] 评论:0 点击:303次

my.ini(Linux系统下🙀是my.cnf),当mysql服务器启动时【qǐ dòng shí】它会读取这个【qǔ zhè gè】🛡文件,设置相关的运【guān de yùn】🕧行环境【háng huán jìng】参数👒。

   my.ini分为两【fèn wéi liǎng】块【kuài】:Client Section和🍋Server Section。
   Client Section用来配【yòng lái pèi】置🌤MySQL客户端参数。
   要查看配置🌤参数可以用下【yǐ yòng xià】面🕶的命令➖:

show variables like '%innodb%'; # 查看【chá kàn】innodb相关配置参数 show status like '%innodb%'; # 查看【chá kàn】innodb相关的【xiàng guān de】运行时【yùn háng shí】参数(比如当前🚖正在打开的🍙表的数【biǎo de shù】量【liàng】🔔,当前🚖已经打开的🍙表的数【biǎo de shù】量【liàng】🔔) show global status like 'open%tables'; # 查看【chá kàn】全🎧局的运【jú de yùn】行时参数,加上【jiā shàng】🔌global是对当🕳前🚖mysql服务器【fú wù qì】中运行的所有数据库实【jù kù shí】例进行🤚统计。不加📮global则只对【zé zhī duì】🚰当前数【dāng qián shù】⛎据库实【jù kù shí】例进行🤚统计。

1、Client Section
    [client]
    port = 3306 # 设置🗻mysql客户端连接服务端时【wù duān shí】默认使用的端📖口【kǒu】
    [mysql]
    default-character-set=utf8 # 设置🗻mysql客户端默认字🈂符集【fú jí】

2、Server Section

[mysqld]
port=3306 # mysql服务端♿默认监【mò rèn jiān】🥣听(listen on)的TCP/IP端口

basedir="C:/Program Files/MySQL/MySQL Server 5.5/" # 基准路🦄径🗜,其他路径🗜都相对于这【yú zhè】🎁个【gè】👳路径🗜

datadir="C:/Program Files/MySQL/MySQL Server 5.5/Data" # mysql数据库文件所【wén jiàn suǒ】🧦在目录

character-set-server=latin1 # 服务端♿使用的【shǐ yòng de】♊字符集🐡默认为8比特编【bǐ tè biān】码的【mǎ de】latin1字符集🐡

default-storage-engine=INNODB # 创建新🙃表时将使用的【shǐ yòng de】♊默认存【cún】储引擎【chǔ yǐn qíng】

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # SQL模式为strict模式

max_connections=100 # mysql服务器支持的【zhī chí de】最大【zuì dà】⏺并发连接数(用户数【yòng hù shù】)。但总会🐉预留其【yù liú qí】❗中的一个【gè】👳连接给【lián jiē gěi】管理【lǐ】📭员使用🏎超级权【chāo jí quán】限登录【xiàn dēng lù】,即使连接数目🚵达到最【dá dào zuì】大【dà】⏺限制。如果设💌置得过【zhì dé guò】小而用🖍户比较多📩,会经常出现🎀“Too many connections”错误。

query_cache_size=0 # 查询缓【chá xún huǎn】😳存【cún】大【dà】小🍊,用于缓存【cún】🤼SELECT查询【chá xún】结🕑果。如果有许多【xǔ duō】📩返回相【fǎn huí xiàng】同【tóng】♌查询【chá xún】结🕑果的SELECT查询【chá xún】,并且很【bìng qiě hěn】少改变表,可以设置query_cache_size大【dà】⏺于0,可以极大【dà】⏺改善查【gǎi shàn chá】询效🧕率【lǜ】。而如果【ér rú guǒ】表数据频繁变化,就不要使用这个【zhè gè】👳,会适得其反

table_cache=256 # 这个【zhè gè】👳参数在【cān shù zài】5.1.3之后的🦊版本中叫做table_open_cache,用于设置table高速缓存的【huǎn cún de】🤥数量。由于每【yóu yú měi】个【gè】👳客户端连接都【lián jiē dōu】会至少访问一【fǎng wèn yī】个【gè】👳表,因此此参数的值【zhí】📿与【yǔ】       max_connections有关。当某一连接访问一【fǎng wèn yī】个【gè】👳表时,MySQL会检查🍆当前已缓存【cún】表🎾的数量🦌。如果该【rú guǒ gāi】🍐表已经【biǎo yǐ jīng】在缓存【cún】🧥中打开,则会直接访问缓存【cún】🤼中的表【de biǎo】已加快【yǐ jiā kuài】查询速【chá xún sù】度;如果该【rú guǒ gāi】🍐表未被缓存【cún】🤼,则会将【zé huì jiāng】当前的表【de biǎo】添加🔽进缓存【cún】🤼并进行查询【chá xún】。在执行缓存【cún】操🎐作之前【zuò zhī qián】🤝,table_cache用于限制缓存【cún】🎓表的最【biǎo de zuì】📹大数目【dà shù mù】✴:如果当前已经💥缓存的【huǎn cún de】🤥表未达【biǎo wèi dá】⭕到table_cache,则会将【zé huì jiāng】新表添【xīn biǎo tiān】🎤加进来;若已经【ruò yǐ jīng】达到此【dá dào cǐ】😸值【zhí】📿,MySQL将根据缓存【cún】表🎾的最后查询【chá xún】时间、查询率【chá xún lǜ】等规则释放之前的缓存【cún】🤼。

tmp_table_size=34M # 内存中【nèi cún zhōng】📓的每个【gè】👳临时表📕允许的最大【zuì dà】⏺大【dà】⏺小。如果临【rú guǒ lín】时表📕大【dà】⏺小超过该值【gāi zhí】📿,临时表📕将自动转为基于磁盘的表【de biǎo】(Disk Based Table)。

thread_cache_size=8 # 缓存的【huǎn cún de】🤥最大线【zuì dà xiàn】🧖程数🤗。当客户【dāng kè hù】端连接断开时,如果客户端总🎗连接数小于该🤰值【zhí】📿,则处理【lǐ】📭客户端任务的🐗线程放【xiàn chéng fàng】🍇回缓存【cún】🤼。在高并发情况【fā qíng kuàng】✴下✉,如果该【rú guǒ gāi】🍐值【zhí】📿设置得太小🧢,就会有很多线🐿程频繁创建,线程创【xiàn chéng chuàng】建的开😠销会变大【dà】⏺,查询效【chá xún xiào】🧕率【lǜ】也会下✉降。一般来说如果在应用🌨端有良好的多📩线程处🛌理【lǐ】📭,这个【zhè gè】👳参数对性【xìng】👌能不会【néng bú huì】🐋有太大【dà】🚥的提高。

# MyISAM相关参【xiàng guān cān】🍀数🤨
myisam_max_sort_file_size=100G # mysql重建索引时【shí】允许使用的临时【shí】文件最大大小【dà xiǎo】💃

myisam_sort_buffer_size=68M

key_buffer_size=54M # Key Buffer大小【dà xiǎo】,用于缓存【cún】MyISAM表的索引块。决定数【jué dìng shù】🖕据【jù】🥚库索引处理的速度(尤其是🚢索引读【suǒ yǐn dú】)

read_buffer_size=64K # 用于对MyISAM表全表【biǎo quán biǎo】🤥扫描时【shí】使用的缓冲【chōng】区大小【dà xiǎo】。针对每个线程进行分配【pèi】🧀(前提是【qián tí shì】进行了全表扫🕕描)。进行排【jìn háng pái】序查询👂时【shí】,MySql会首先🤝扫描一⛏遍该缓冲【chōng】,以避免🚌磁盘搜【cí pán sōu】索,提高查【tí gāo chá】询速度【xún sù dù】🧢,如果需【rú guǒ xū】🆒要排序💌大量数【dà liàng shù】🤨据【jù】🥚,可适当调高该值💛。但MySql会为每个⛹客户连【kè hù lián】接发👏放该缓【fàng gāi huǎn】冲空间【chōng kōng jiān】,所以应【suǒ yǐ yīng】🧚尽量适当设置【dāng shè zhì】该值💛,以避免🚌内存【cún】开销过大。

read_rnd_buffer_size=256K

sort_buffer_size=256K # connection级参数🤨(为每个⛹线程配【pèi】🚮置【zhì】),500个线程将消耗🥧500*256K的sort_buffer_size。

# InnoDB相关参数✍
innodb_additional_mem_pool_size=3M # InnoDB用于存🎆储元数【chǔ yuán shù】✍据信息的内存【de nèi cún】🌥池大小【chí dà xiǎo】👻,一般不需修改

innodb_flush_log_at_trx_commit =1 # 事务相【shì wù xiàng】关参数✍,如果值为【wéi】1,则InnoDB在每次【zài měi cì】🍣commit都【dōu】会将事务日【shì wù rì】志写入【zhì xiě rù】磁😔盘(磁盘【cí pán】IO消耗较😼大【dà】),这样保证了完全的🌬ACID特性。而如果设【rú guǒ shè】置为【wéi】0,则表示【zé biǎo shì】🔑事务日【shì wù rì】志写入【zhì xiě rù】内存🌥log和内存🌥log写入磁😔盘的频【pán de pín】率都【dōu】为【wéi】1次【cì】🍧/秒【miǎo】🧞。如果设【rú guǒ shè】为【wéi】2则表示【zé biǎo shì】🔑事务日【shì wù rì】志在每次【zài měi cì】🍣commit都【dōu】写入内存🌥log,但内存【dàn nèi cún】🖋log写入磁😔盘的频【pán de pín】率为【wéi】💖1次【cì】🍧/秒【miǎo】🧞。

innodb_log_buffer_size=2M # InnoDB日志数✍据缓冲🆚大【dà】小,如果缓🍓冲满了,就会将缓冲中的日志【de rì zhì】❣数✍据写入磁😔盘(flush)。由于一般至少【bān zhì shǎo】都【dōu】1秒【miǎo】钟会🍰写一次【xiě yī cì】🍧磁盘【cí pán】,所以没【suǒ yǐ méi】必要设置过大【dà】,即使是⛺长事务【zhǎng shì wù】🏻。

innodb_buffer_pool_size=105M # InnoDB使用缓冲池来缓存索引和行【yǐn hé háng】数✍据。该值设【gāi zhí shè】置的越🀄大【dà】,则磁盘【cí pán】IO越少。一般将该值设【gāi zhí shè】为【wéi】物理🚮内存的😭80%。

innodb_log_file_size=53M # 每一个🚶InnoDB事务日【shì wù rì】志的大【zhì de dà】小。一般设【yī bān shè】🐼为【wéi】innodb_buffer_pool_size的25%到100%

innodb_thread_concurrency=9 # InnoDB内核最【nèi hé zuì】👑大【dà】并发线程数🤳。

在Apache, PHP, MySQL的体系架构中,MySQL对于性😣能的影【néng de yǐng】🦂响最大,也是关【yě shì guān】键的核心部分【fèn】。对于Discuz!论坛程【lùn tán chéng】序也是如此,MySQL的设置是否合【shì fǒu hé】理优化🏳,直接影😱响到论【xiǎng dào lùn】坛的速【tán de sù】📝度和承载量【zǎi liàng】!同时,MySQL也是优【yě shì yōu】化难度最大的一个部【yī gè bù】📛分【fèn】,不但需👺要理解一些【yī xiē】MySQL专业知识【shí】❗,同时还【tóng shí hái】需要长【xū yào zhǎng】时间的【shí jiān de】观察统📨计并且根据经验进行【yàn jìn háng】🎮判断🎤,然后设🛬置合理的参数🥕。 下面我🏩们了解一下MySQL优化的一些【yī xiē】基础,MySQL的优化【de yōu huà】🕚我分【fèn】为😵两个部分【fèn】,一是服【yī shì fú】🚜务器物理硬件🚅的优化【de yōu huà】🕚,二是MySQL自身(my.cnf)的优化【de yōu huà】🕚。

一、服务器【qì】🐝硬件对😏MySQL性能的影响【yǐng xiǎng】
①磁盘【cí pán】👇寻道能【xún dào néng】力(磁盘【cí pán】👇I/O),以目前【yǐ mù qián】🔞高转速🌐SCSI硬盘🐄(7200转🍣/秒)为【wéi】👆例【lì】,这种硬盘🐄理论上每秒🦅寻道7200次🍠,这是物【zhè shì wù】理特性决定【dìng】的,没有办法改变【fǎ gǎi biàn】。MySQL每秒钟👕都在【zài】🤪进行【jìn háng】大量【liàng】、复杂的【fù zá de】查询操【chá xún cāo】作【zuò】,对😏磁盘【cí pán】👇的读写【de dú xiě】量可想【liàng kě xiǎng】❤而知🐫。所以【suǒ yǐ】,通常认为【wéi】👆磁盘【cí pán】👇I/O是制约【shì zhì yuē】🕌MySQL性能的最大因素之一,对于【yú】🥖日均访问🛬量在【liàng zài】💰100万PV以上的⛽Discuz!论坛,由于【yú】🍅磁盘【cí pán】👇I/O的制约,MySQL的性能⤵会非常低🦂下!解决这💪一制约因素可以考虑🐭以下几【yǐ xià jǐ】种解决【zhǒng jiě jué】方案🐙: 使用👢RAID-0+1磁盘阵【cí pán zhèn】🦌列,注意🍂不要尝试🧡使用👢RAID-5,MySQL在【zài】🤪RAID-5磁盘阵【cí pán zhèn】🦌列上的【liè shàng de】效率不【xiào lǜ bú】🛂会像你【huì xiàng nǐ】期待的那样快📊。
②CPU 对于【yú】🥖MySQL应用🎻,推荐使🏴用🎻S.M.P.架构的👇多路对📛称CPU,例如【lì rú】:可以使【kě yǐ shǐ】💐用🎻两颗【liǎng kē】Intel Xeon 3.6GHz的CPU,现在【xiàn zài】🤪我较推荐用🎻4U的服务【de fú wù】器【qì】🐝来专门做数据库服🍚务器【qì】,不仅仅是针对于【yú】🥖mysql。
③物理内存【cún】对于【yú】🥖一台使【yī tái shǐ】用👢MySQL的Database Server来说【lái shuō】,服务器【qì】🐝内存【cún】建议不要小于【xiǎo yú】🐥2GB,推荐使🏴用🎻4GB以上的⛽物理内存【cún】,不过内【bú guò nèi】🍩存【cún】对于【yú】🥖现在【xiàn zài】🤪的服务【de fú wù】器【qì】🐝而言可以说是一个可【yī gè kě】以忽略的问题,工作中【gōng zuò zhōng】遇到了【yù dào le】高端服【gāo duān fú】🦀务器【qì】基🍰本上内【běn shàng nèi】存都超【cún dōu chāo】🤑过了【guò le】16G。

二、MySQL自身因素当解决了上【jué le shàng】述服务👛器硬件【qì yìng jiàn】制约因素后💋,让我们【ràng wǒ men】🎭看看MySQL自身的【zì shēn de】优化是如何操作【zuò】的。对😏MySQL自身的【zì shēn de】优化主要是对【yào shì duì】😏其配置文件my.cnf中的各项🤕参数进行【jìn háng】优化调整【diào zhěng】😊。下面💺我们介【wǒ men jiè】绍一些【shào yī xiē】对😏性能影🔚响较大的参数。 由于【yú】🍅my.cnf文件的🧞优化设【yōu huà shè】置是与服务器【qì】🐝硬件配【yìng jiàn pèi】📡置息息😪相关的,因而我们指定【dìng】一个假想的服务【de fú wù】器【qì】🐝硬件环境🍎:CPU: 2颗Intel Xeon 2.4GHz 内存【cún】: 4GB DDR 硬盘🐄: SCSI 73GB(很常见的2U服务器【qì】🐝)。

下面💺,我们根【wǒ men gēn】据以上硬件配【yìng jiàn pèi】📡置结合【zhì jié hé】一份已【yī fèn yǐ】经优化好的🌗my.cnf进行【jìn háng】说明:
#vim /etc/my.cnf以下只【yǐ xià zhī】列出my.cnf文件中📰[mysqld]段落中✋的内容,其他段【qí tā duàn】落内容对😏MySQL运行性能影🔚响甚微,因而姑【yīn ér gū】且忽略。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
#避免MySQL的外部🆖锁定【dìng】,减少出【jiǎn shǎo chū】错几率增强稳【zēng qiáng wěn】🐼定【dìng】性🐯。
skip-name-resolve
#禁止💧MySQL对😏外部连接🕡进行【jìn háng】DNS解析,使用这👇一选项🤕可以消【kě yǐ xiāo】👹除MySQL进行【jìn háng】DNS解析的时间【shí jiān】。但需要【dàn xū yào】注意🍂,如果开启该选项🤕,则所有远程主【yuǎn chéng zhǔ】机连接【jī lián jiē】🕡授权都💰要使用👢IP地址方式,否则【fǒu zé】👚MySQL将无法正常处【zhèng cháng chù】理连接🕡请求!
back_log = 384
#back_log参数的【cān shù de】值指出🙅在【zài】🤪MySQL暂时停止响应【zhǐ xiǎng yīng】😳新请求💱之前的短时间【shí jiān】内多少个请求【gè qǐng qiú】可以被【kě yǐ bèi】🧜存【cún】在【zài】🤪堆栈中🔪。 如果系【rú guǒ xì】🧝统在【zài】🤪一个短时间【shí jiān】内有💴很多连【hěn duō lián】🔐接🕡,则需要【zé xū yào】🐸增大该【zēng dà gāi】参数🕘的值,该参数【gāi cān shù】🕘值指定【dìng】到来的🤾TCP/IP连接的🎈侦听队列的大【liè de dà】小【xiǎo】。不同的操作【zuò】系统在【zài】这💫个队列🧖大小【xiǎo】上有它自己的限制。 试图设定【dìng】back_log高于【yú】你的操作【zuò】系统的😯限制将是无效【shì wú xiào】🏢的。默认值🚽为【wéi】👆50。对于【yú】🥖Linux系统推【xì tǒng tuī】荐设置✌为【wéi】👆小于【xiǎo yú】🐥512的整数【de zhěng shù】🚈。
key_buffer_size = 256M
#key_buffer_size指定用【zhǐ dìng yòng】🎻于索引【yú suǒ yǐn】的缓冲【de huǎn chōng】♍区大小【qū dà xiǎo】🤳,增加它〽可得到📯更好的【gèng hǎo de】🥣索引处【suǒ yǐn chù】📠理性能【lǐ xìng néng】。对于内【duì yú nèi】🙁存【cún】在【zài】🤪4GB左右的【zuǒ yòu de】🥥服务器【qì】🐝该参数【gāi cān shù】🕘可设置为【wéi】👆256M或【huò】🆙384M。注意🍂:该参数【gāi cān shù】🕘值设置【zhí shè zhì】🕺的过大【de guò dà】反而会💢是服务📮器【qì】整体效率降😧低🦂!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
#查询排序时所🐷能使用👢的缓冲【de huǎn chōng】♍区大小【qū dà xiǎo】🤳。注意🍂:该参数【gāi cān shù】🕘对😏应的分配内【pèi nèi】🛥存是每【cún shì měi】连接🕡独占🎽,如果有100个连接【gè lián jiē】🕡,那么实际分配的总共【de zǒng gòng】排序缓【pái xù huǎn】🧔冲区大小【qū dà xiǎo】🤳为【wéi】👆100 × 6 = 600MB。所以【suǒ yǐ】,对于内【duì yú nèi】🙁存【cún】在【zài】🤪4GB左右的【zuǒ yòu de】🥥服务器【qì】🐝推荐设

关键词【guān jiàn cí】:MySQL,mysql.ini

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 欢迎喜欢
  • 0 白痴
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙视