my.ini(Linux系統(tǒng)下是my.cnf),當(dāng)mysql服務(wù)器啟動(dòng)時(shí)它會(huì)讀取這個(gè)文件,設(shè)置相關(guān)的運(yùn)行環(huán)境參數(shù)。 my.ini分為兩塊:Client Section和Server Section。 show variables like '%innodb%'; 查看innodb相關(guān)配置參數(shù) show status like '%innodb%'; 查看innodb相關(guān)的運(yùn)行時(shí)參數(shù)(比如當(dāng)前正在打開(kāi)的表的數(shù)量,當(dāng)前已經(jīng)打開(kāi)的表的數(shù)量) show global status like 'open%tables'; 查看全局的運(yùn)行時(shí)參數(shù),加上global是對(duì)當(dāng)前mysql服務(wù)器中運(yùn)行的所有數(shù)據(jù)庫(kù)實(shí)例進(jìn)行統(tǒng)計(jì),不加global則只對(duì)當(dāng)前數(shù)據(jù)庫(kù)實(shí)例進(jìn)行統(tǒng)計(jì)。 1、Client Section 要查看配置參數(shù)可以用下面的命令: show variables like '%innodb%'; 查看innodb相關(guān)配置參數(shù) 查看innodb相關(guān)的運(yùn)行時(shí)參數(shù)(比如當(dāng)前正在打開(kāi)的表的數(shù)量,當(dāng)前已經(jīng)打開(kāi)的表的數(shù)量) 查看全局的運(yùn)行時(shí)參數(shù),加上global是對(duì)當(dāng)前mysql服務(wù)器中運(yùn)行的所有數(shù)據(jù)庫(kù)實(shí)例進(jìn)行統(tǒng)計(jì),不加global則只對(duì)當(dāng)前數(shù)據(jù)庫(kù)實(shí)例進(jìn)行統(tǒng)計(jì)。 2、Server Section [mysqld] port=3306 mysql服務(wù)端默認(rèn)監(jiān)聽(tīng)(listen on)的TCP/IP端口 basedir="C:/Program Files/MySQL/MySQL Server 5.5/" 基準(zhǔn)路徑,其他路徑都相對(duì)于這個(gè)路徑 datadir="C:/Program Files/MySQL/MySQL Server 5.5/Data" mysql數(shù)據(jù)庫(kù)文件所在目錄 character-set-server=latin1 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集 default-storage-engine=INNODB 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" SQL模式為strict模式 max_connections=100 mysql服務(wù)器支持的最大并發(fā)連接數(shù)(用戶(hù)數(shù)),但總會(huì)預(yù)留其中的一個(gè)連接給管理員使用超級(jí)權(quán)限登錄,即使連接數(shù)目達(dá)到最大限制。如果設(shè)置得過(guò)小而用戶(hù)比較多,會(huì)經(jīng)常出現(xiàn)“Too many connections”錯(cuò)誤。 query_cache_size=0 查詢(xún)緩存大小,用于緩存SELECT查詢(xún)結(jié)果。如果有許多返回相同查詢(xún)結(jié)果的SELECT查詢(xún),并且很少改變表,可以設(shè)置query_cache_size大于0,可以極大改善查詢(xún)效率。而如果表數(shù)據(jù)頻繁變化,就不要使用這個(gè),會(huì)適得其反 table_cache=256 這個(gè)參數(shù)在5.1.3之后的版本中叫做table_open_cache,用于設(shè)置table高速緩存的數(shù)量。由于每個(gè)客戶(hù)端連接都會(huì)至少訪(fǎng)問(wèn)一個(gè)表,因此此參數(shù)的值與max_connections有關(guān)。當(dāng)某一連接訪(fǎng)問(wèn)一個(gè)表時(shí),MySQL會(huì)檢查當(dāng)前已緩存表的數(shù)量。如果該表已經(jīng)在緩存中打開(kāi),則會(huì)直接訪(fǎng)問(wèn)緩存中的表已加快查詢(xún)速度;如果該表未被緩存,則會(huì)將當(dāng)前的表添加進(jìn)緩存并進(jìn)行查詢(xún)。在執(zhí)行緩存操作之前,table_cache用于限制緩存表的最大數(shù)目:如果當(dāng)前已經(jīng)緩存的表未達(dá)到table_cache,則會(huì)將新表添加進(jìn)來(lái);若已經(jīng)達(dá)到此值,MySQL將根據(jù)緩存表的最后查詢(xún)時(shí)間、查詢(xún)率等規(guī)則釋放之前的緩存。 tmp_table_size=34M 內(nèi)存中的每個(gè)臨時(shí)表允許的最大大小。如果臨時(shí)表大小超過(guò)該值,臨時(shí)表將自動(dòng)轉(zhuǎn)為基于磁盤(pán)的表(Disk Based Table)。 thread_cache_size=8 緩存的最大線(xiàn)程數(shù)。當(dāng)客戶(hù)端連接斷開(kāi)時(shí),如果客戶(hù)端總連接數(shù)小于該值,則處理客戶(hù)端任務(wù)的線(xiàn)程放回緩存。在高并發(fā)情況下,如果該值設(shè)置得太小,就會(huì)有很多線(xiàn)程頻繁創(chuàng)建,線(xiàn)程創(chuàng)建的開(kāi)銷(xiāo)會(huì)變大,查詢(xún)效率也會(huì)下降。一般來(lái)說(shuō)如果在應(yīng)用端有良好的多線(xiàn)程處理,這個(gè)參數(shù)對(duì)性能不會(huì)有太大的提高。 # MyISAM相關(guān)參數(shù) myisam_max_sort_file_size=100G mysql重建索引時(shí)允許使用的臨時(shí)文件最大大小 myisam_sort_buffer_size=68M key_buffer_size=54M Key Buffer大小,用于緩存MyISAM表的索引塊。決定數(shù)據(jù)庫(kù)索引處理的速度(尤其是索引讀) read_buffer_size=64K 用于對(duì)MyISAM表全表掃描時(shí)使用的緩沖區(qū)大小。針對(duì)每個(gè)線(xiàn)程進(jìn)行分配(前提是進(jìn)行了全表掃描)。進(jìn)行排序查詢(xún)時(shí),MySql會(huì)首先掃描一遍該緩沖,以避免磁盤(pán)搜索,提高查詢(xún)速度,如果需要排序大量數(shù)據(jù),可適當(dāng)調(diào)高該值。但MySql會(huì)為每個(gè)客戶(hù)連接發(fā)放該緩沖空間,所以應(yīng)盡量適當(dāng)設(shè)置該值,以避免內(nèi)存開(kāi)銷(xiāo)過(guò)大。 read_rnd_buffer_size=256K sort_buffer_size=256K connection級(jí)參數(shù)(為每個(gè)線(xiàn)程配置),500個(gè)線(xiàn)程將消耗500*256K的sort_buffer_size。 # InnoDB相關(guān)參數(shù) innodb_additional_mem_pool_size=3M InnoDB用于存儲(chǔ)元數(shù)據(jù)信息的內(nèi)存池大小,一般不需修改 innodb_flush_log_at_trx_commit =1 事務(wù)相關(guān)參數(shù),如果值為1,則InnoDB在每次commit都會(huì)將事務(wù)日志寫(xiě)入磁盤(pán)(磁盤(pán)IO消耗較大),這樣保證了完全的ACID特性。而如果設(shè)置為0,則表示事務(wù)日志寫(xiě)入內(nèi)存log和內(nèi)存log寫(xiě)入磁盤(pán)的頻率都為1次/秒。如果設(shè)為2則表示事務(wù)日志在每次commit都寫(xiě)入內(nèi)存log,但內(nèi)存log寫(xiě)入磁盤(pán)的頻率為1次/秒。 innodb_log_buffer_size=2M InnoDB日志數(shù)據(jù)緩沖大小,如果緩沖滿(mǎn)了,就會(huì)將緩沖中的日志數(shù)據(jù)寫(xiě)入磁盤(pán)(flush)。由于一般至少都1秒鐘會(huì)寫(xiě)一次磁盤(pán),所以沒(méi)必要設(shè)置過(guò)大,即使是長(zhǎng)事務(wù)。 innodb_buffer_pool_size=105M InnoDB使用緩沖池來(lái)緩存索引和行數(shù)據(jù)。該值設(shè)置的越大,則磁盤(pán)IO越少。一般將該值設(shè)為物理內(nèi)存的80%。 innodb_log_file_size=53M 每一個(gè)InnoDB事務(wù)日志的大小。一般設(shè)為innodb_buffer_pool_size的25%到100% innodb_thread_concurrency=9 InnoDB內(nèi)核最大并發(fā)線(xiàn)程數(shù) |
|
來(lái)自: peijs5201314 > 《Mysql》