MySQL配置文件my.ini的使用解讀
my.ini 是啥玩意?
my.ini是MySQL數(shù)據(jù)庫(kù)中使用的配置文件,修改這個(gè)文件可以達(dá)到更新配置的目的。
my.ini 在哪放著呢?
my.ini存放在MySql安裝的根目錄,如圖所示:(我比較懶,用的WAMP,大家找自己的安裝目錄即可)
my.ini的配置內(nèi)容介紹
其實(shí)大體可以分為兩部分:客戶端的參數(shù)、服務(wù)器參數(shù)。
其中服務(wù)器參數(shù)里還包括 InnoDB存儲(chǔ)引擎參數(shù)。
客戶端的參數(shù)
下面顯示的是客戶端的參數(shù),[client]和[mysql]都是客戶端,下面是參數(shù)簡(jiǎn)介:
port
參數(shù)表示的是MySQL數(shù)據(jù)庫(kù)的端口,默認(rèn)的端口是3306,如果你需要更改端口號(hào)的話,就可以通過(guò)在這里修改。default-character-set
參數(shù)是客戶端默認(rèn)的字符集,如果你希望它支持中文,可以設(shè)置成gbk或者utf8。- 這里還有一個(gè)
password
參數(shù),在這里設(shè)置了password參數(shù)的值就可以在登陸時(shí)不用輸入密碼直接進(jìn)入
# CLIENT SECTION # ---------------------------------------------------------------------- # # The following options will be read by MySQL client applications. # Note that only client applications shipped by MySQL are guaranteed # to read this section. If you want your own MySQL client program to # honor these values, you need to specify it as an option during the # MySQL client library initialization. # [client] port=3306 [mysql] default-character-set=gb2312
服務(wù)器斷參數(shù)
以下是參數(shù)的介紹:
port
參數(shù)也是表示數(shù)據(jù)庫(kù)的端口。basedir
參數(shù)表示MySQL的安裝路徑。datadir
參數(shù)表示MySQL數(shù)據(jù)文件的存儲(chǔ)位置,也是數(shù)據(jù)庫(kù)表的存放位置。default-character-set
參數(shù)表示默認(rèn)的字符集,這個(gè)字符集是服務(wù)器端的。default-storage-engine
參數(shù)默認(rèn)的存儲(chǔ)引擎。- 這里有兩個(gè)引擎 MyISAM 和 InnoDB ,用什么看你需求,詳細(xì)介紹可以參考下面這篇文章:http://www.dbjr.com.cn/article/270995.htm
sql-mode
參數(shù)表示SQL模式的參數(shù),通過(guò)這個(gè)參數(shù)可以設(shè)置檢驗(yàn)SQL語(yǔ)句的嚴(yán)格程度。max_connections
參數(shù)表示允許同時(shí)訪問(wèn)MySQL服務(wù)器的最大連接數(shù),其中一個(gè)連接是保留的,留給管理員專用的。query_cache_size
參數(shù)表示查詢時(shí)的緩存大小,緩存中可以存儲(chǔ)以前通過(guò)select語(yǔ)句查詢過(guò)的信息,再次查詢時(shí)就可以直接從緩存中拿出信息。table_cache
參數(shù)表示所有進(jìn)程打開(kāi)表的總數(shù)。tmp_table_size
參數(shù)表示內(nèi)存中臨時(shí)表的總數(shù)。thread_cache_size
參數(shù)表示保留客戶端線程的緩存。myisam_max_sort_file_size
參數(shù)表示MySQL重建索引時(shí)所允許的最大臨時(shí)文件的大小。myisam_sort_buffer_size
參數(shù)表示重建索引時(shí)的緩存大小。key_buffer_size
參數(shù)表示關(guān)鍵詞的緩存大小。read_buffer_size
參數(shù)表示MyISAM表全表掃描的緩存大小。read_rnd_buffer_size
參數(shù)表示將排序好的數(shù)據(jù)存入該緩存中。sort_buffer_size
參數(shù)表示用于排序的緩存大小
# SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 #Path to installation directory. All paths are usually resolved relative to this. basedir="E:/Java/Mysql/" #Path to the database root datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" # The default character set that will be used when a new schema or table is # created and no character set is defined character-set-server=gb2312 # The default storage engine that will be used when create new tables when default-storage-engine=INNODB # Set the SQL mode to strict sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # The maximum amount of concurrent sessions the MySQL server will # allow. One of these connections will be reserved for a user with # SUPER privileges to allow the administrator to login even if the # connection limit has been reached. max_connections=100 # Query cache is used to cache SELECT results and later return them # without actual executing the same query once again. Having the query # cache enabled may result in significant speed improvements, if your # have a lot of identical queries and rarely changing tables. See the # "Qcache_lowmem_prunes" status variable to check if the current value # is high enough for your load. # Note: In case your tables change very often or if your queries are # textually different every time, the query cache may result in a # slowdown instead of a performance improvement. query_cache_size=0 # The number of open tables for all threads. Increasing this value # increases the number of file descriptors that mysqld requires. # Therefore you have to make sure to set the amount of open files # allowed to at least 4096 in the variable "open-files-limit" in # section [mysqld_safe] table_cache=256 # Maximum size for internal (in-memory) temporary tables. If a table # grows larger than this value, it is automatically converted to disk # based table This limitation is for a single table. There can be many # of them. tmp_table_size=35M # How many threads we should keep in a cache for reuse. When a client # disconnects, the client's threads are put in the cache if there aren't # more than thread_cache_size threads from before. This greatly reduces # the amount of thread creations needed if you have a lot of new # connections. (Normally this doesn't give a notable performance # improvement if you have a good thread implementation.) thread_cache_size=8 #*** MyISAM Specific options # The maximum size of the temporary file MySQL is allowed to use while # recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE. # If the file-size would be bigger than this, the index will be created # through the key cache (which is slower). myisam_max_sort_file_size=100G # If the temporary file used for fast index creation would be bigger # than using the key cache by the amount specified here, then prefer the # key cache method. This is mainly used to force long character keys in # large tables to use the slower key cache method to create the index. myisam_sort_buffer_size=69M # Size of the Key Buffer, used to cache index blocks for MyISAM tables. # Do not set it larger than 30% of your available memory, as some memory # is also required by the OS to cache rows. Even if you're not using # MyISAM tables, you should still set it to 8-64M as it will also be # used for internal temporary disk tables. key_buffer_size=55M # Size of the buffer used for doing full table scans of MyISAM tables. # Allocated per thread, if a full scan is needed. read_buffer_size=64K read_rnd_buffer_size=256K # This buffer is allocated when MySQL needs to rebuild the index in # REPAIR, OPTIMZE, ALTER table statements as well as in LOAD DATA INFILE # into an empty table. It is allocated per thread so be careful with # large settings. sort_buffer_size=256K
InnoDB存儲(chǔ)引擎使用的參數(shù):
以下是參數(shù)的簡(jiǎn)介:
innodb_additional_mem_pool_size
參數(shù)表示附加的內(nèi)存池,用來(lái)存儲(chǔ)InnoDB表的內(nèi)容。innodb_flush_log_at_trx_commit
參數(shù)是設(shè)置提交日志的時(shí)機(jī),若設(shè)置為1,InnoDB會(huì)在每次提交后將事務(wù)日志寫到磁盤上。innodb_log_buffer_size
參數(shù)表示用來(lái)存儲(chǔ)日志數(shù)據(jù)的緩存區(qū)的大小。innodb_buffer_pool_size
參數(shù)表示緩存的大小,InnoDB使用一個(gè)緩沖池類保存索引和原始數(shù)據(jù)。innodb_log_file_size
參數(shù)表示日志文件的大小。innodb_thread_concurrency
參數(shù)表示在InnoDB存儲(chǔ)引擎允許的線程最大數(shù)。
#*** INNODB Specific options *** # Use this option if you have a MySQL server with InnoDB support enabled # but you do not plan to use it. This will save memory and disk space # and speed up some things. #skip-innodb # Additional memory pool that is used by InnoDB to store metadata # information. If InnoDB requires more memory for this purpose it will # start to allocate it from the OS. As this is fast enough on most # recent operating systems, you normally do not need to change this # value. SHOW INNODB STATUS will display the current amount used. innodb_additional_mem_pool_size=3M # If set to 1, InnoDB will flush (fsync) the transaction logs to the # disk at each commit, which offers full ACID behavior. If you are # willing to compromise this safety, and you are running small # transactions, you may set this to 0 or 2 to reduce disk I/O to the # logs. Value 0 means that the log is only written to the log file and # the log file flushed to disk approximately once per second. Value 2 # means the log is written to the log file at each commit, but the log # file is only flushed to disk approximately once per second. innodb_flush_log_at_trx_commit=1 # The size of the buffer InnoDB uses for buffering log data. As soon as # it is full, InnoDB will have to flush it to disk. As it is flushed # once per second anyway, it does not make sense to have it very large # (even with long transactions). innodb_log_buffer_size=2M # InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and # row data. The bigger you set this the less disk I/O is needed to # access data in tables. On a dedicated database server you may set this # parameter up to 80% of the machine physical memory size. Do not set it # too large, though, because competition of the physical memory may # cause paging in the operating system. Note that on 32bit systems you # might be limited to 2-3.5G of user level memory per process, so do not # set it too high. innodb_buffer_pool_size=107M # Size of each log file in a log group. You should set the combined size # of log files to about 25%-100% of your buffer pool size to avoid # unneeded buffer pool flush activity on log file overwrite. However, # note that a larger logfile size will increase the time needed for the # recovery process. innodb_log_file_size=54M # Number of threads allowed inside the InnoDB kernel. The optimal value # depends highly on the application, hardware as well as the OS # scheduler properties. A too high value may lead to thread thrashing. innodb_thread_concurrency=18
中文翻譯版 my.ini
[client] port=3306 [mysql] default-character-set=gbk [mysqld] port = 3306 socket = /tmp/mysql.sock # 設(shè)置mysql的安裝目錄 basedir=F:\\Hzq Soft\\MySql Server 51GA # 設(shè)置mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)的存放目錄,必須是data,或者是\\xxx-data datadir=F:\\Hzq Soft\\MySql Server 51GA\\data #innodb_log_arch_dir 默認(rèn)datadir #innodb_log_group_home_dir 默認(rèn)datadir # 設(shè)置mysql服務(wù)器的字符集,默認(rèn)編碼 default-character-set=utf8 #連接數(shù)的操作系統(tǒng)監(jiān)聽(tīng)隊(duì)列數(shù)量,如果經(jīng)常出現(xiàn)“拒絕連接”錯(cuò)誤可適當(dāng)增加此值 back_log = 50 #不使用接聽(tīng)TCP / IP端口方法,mysqld通過(guò)命名管道連接 #skip-networking # 最大連接數(shù)量 max_connections = 90 #打開(kāi)表的線程數(shù)量限定,最大4096,除非用mysqld_safe打開(kāi)限制 table_open_cache = 2048 #MySql 服務(wù)接收針對(duì)每個(gè)進(jìn)程最大查詢包大小 max_allowed_packet = 16M #作用于SQL查詢單筆處理使用的內(nèi)存緩存,如果一筆操作的二進(jìn)制數(shù)據(jù)超過(guò)了限定大小,將會(huì)在磁盤上開(kāi)辟空間處理,一般設(shè)為 1-2M即可,默認(rèn)1M binlog_cache_size = 2M #單個(gè)內(nèi)存表的最大值限定 max_heap_table_size = 64M #為每個(gè)線程分配的排序緩沖大小 sort_buffer_size = 8M #join 連表操作的緩沖大小,根據(jù)實(shí)際業(yè)務(wù)來(lái)設(shè)置,默認(rèn)8M join_buffer_size = 32M #操作多少個(gè)離開(kāi)連接的線程的緩存 thread_cache_size = 8 #并發(fā)線程數(shù)量,默認(rèn)為8,可適當(dāng)增加到2倍以內(nèi)。如果有多個(gè)CPU可以乘 上CPU的數(shù)量。雙核CPU可以乘 上當(dāng)前最核數(shù)再乘 上70%-85% thread_concurrency = 16 #專用于具體SQL的緩存,如果提交的查詢與幾次中的某查詢相同,并且在query緩存中存在,則直接返回緩存中的結(jié)果。 query_cache_size = 64M #對(duì)應(yīng)上一條設(shè)置,當(dāng)查詢的結(jié)果超過(guò)下面設(shè)置的大小時(shí),將不會(huì)趣入到上面設(shè)置的緩存區(qū)中,避免了一個(gè)大的結(jié)果占據(jù)大量緩存。 query_cache_limit = 2M #設(shè)置加全文檢索中的最小單詞長(zhǎng)度。 #ft_min_word_len = 4 #CREATE TABLE 語(yǔ)句的默認(rèn)表類型,如果不自己指定類型,則使用下行的類型 default-storage-engine = InnoDB #線程堆棧大小,mysql說(shuō)它自己用的堆棧大小不超過(guò)64K。這個(gè)值可適當(dāng)設(shè)高一點(diǎn)(在RCA的項(xiàng)目中都是共用同一個(gè)數(shù)據(jù)庫(kù)連接的),默認(rèn)192K thread_stack = 800K #設(shè)置事務(wù)處理的級(jí)別,默認(rèn) REPEATABLE-READ,一般用它就即可,以下二行按順序?qū)?yīng), #可讀寫未提交的數(shù)據(jù),創(chuàng)建未提交的數(shù)據(jù)副本讀寫,未提交之前可讀不可寫,只允許串行序列招行事務(wù)。 # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE transaction_isolation = REPEATABLE-READ #單一內(nèi)存臨時(shí)表在內(nèi)存中的大小,超過(guò)此值自動(dòng)轉(zhuǎn)換到磁盤操作 tmp_table_size = 64M #啟動(dòng)二進(jìn)制日志功能,可通過(guò)它實(shí)現(xiàn)時(shí)間點(diǎn)恢復(fù)最新的備份 #log-bin=mysql-bin #二進(jìn)制日志格式,對(duì)就上一條,-建議混合格式 #binlog_format=mixed #轉(zhuǎn)換查詢?yōu)榫徛樵? slow_query_log #對(duì)應(yīng)上一條,如果一個(gè)查詢超過(guò)了下條設(shè)定的時(shí)間則執(zhí)行上一條。 long_query_time = 2 #自定義主機(jī)ID識(shí)別符,用于主從或多服務(wù)器之間識(shí)別,為 一個(gè) int 類型 server-id = 1 #一般用來(lái)緩存MyISAM表的主鍵,也用于臨時(shí)的磁盤表緩存主鍵,上面多次出現(xiàn)臨時(shí)磁盤表,所以就算不用MyISAM也最好為其設(shè)置一個(gè)不小的值,默認(rèn)32M key_buffer_size = 56M #全表掃描MyISAM表時(shí)的緩存,每個(gè)線程擁有下行的大小。 read_buffer_size = 2M #排序操作時(shí)與磁盤之間的緩存,分到每個(gè)線程,默認(rèn)16M read_rnd_buffer_size = 16M #MyISAM使用特殊樹(shù)形進(jìn)行批量插入時(shí)的緩存,如insert ... values(..)(..)(..) bulk_insert_buffer_size = 64M #MyISAM索引文件的最大限定, myisam_max_sort_file_size = 12G #如果一個(gè)myisam表有一個(gè)以上的索引, MyISAM可以使用一個(gè)以上線程來(lái)排序并行它們。較耗硬件資源,如果你的環(huán)境不錯(cuò),可以增加此值。 myisam_repair_threads = 2 #自動(dòng)檢查和修復(fù)無(wú)法正確關(guān)閉MyISAM表。 myisam_recover # *** INNODB Specific options *** #開(kāi)啟下條將會(huì)禁用 INNODB #skip-innodb #一般不用設(shè)置或者說(shuō)設(shè)了也沒(méi)多大用,InnoDB會(huì)自己與操作系統(tǒng)交互管理其附加內(nèi)存池所使用InnoDB的存儲(chǔ)數(shù)據(jù)的大小 innodb_additional_mem_pool_size = 16M #innodb整體緩沖池大小,不宜過(guò)大,設(shè)為本地內(nèi)存的 50%-75% 比較合適,在本機(jī)開(kāi)發(fā)過(guò)程中可以設(shè)得較小一點(diǎn)如 64M,256M innodb_buffer_pool_size = 256M #InnoDB的數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)數(shù)據(jù)文件組成的表空間 innodb_data_file_path = ibdata1:10M:autoextend #用于異步IO操作的線程數(shù)量,默認(rèn)為 4 ,可適當(dāng)提高 innodb_file_io_threads = 8 #線程數(shù)內(nèi)允許的InnoDB內(nèi)核,不宜太高 innodb_thread_concurrency = 14 #InnoDB的事務(wù)日志快存行為,默認(rèn)為 1,為0可減輕磁盤I/0操作,還有以為2 innodb_flush_log_at_trx_commit = 1 #InnoDB的用于的緩沖日志數(shù)據(jù)的大小 innodb_log_buffer_size = 16M #日志文件,可設(shè)置為25%-90%的總體緩存大小,默認(rèn) 256M. 修改此項(xiàng)要先刪除datadir\ib_logfileXXX innodb_log_file_size = 256M #日志組數(shù)量,默認(rèn)為3 innodb_log_files_in_group = 3 #InnoDB的日志文件位置。默認(rèn)是MySQL的datadir #innodb_log_group_home_dir #InnoDB最大允許的臟頁(yè)緩沖池的百分比,默認(rèn)90 innodb_max_dirty_pages_pct = 90 #事務(wù)死鎖超時(shí)設(shè)定 innodb_lock_wait_timeout = 120 [client] port = 3306 socket = /tmp/mysql.sock # 設(shè)置mysql客戶端的字符集 default-character-set=utf8 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash # Only allow UPDATEs and DELETEs that use keys. #safe-updates [WinMySQLAdmin] # 指定mysql服務(wù)啟動(dòng)啟動(dòng)的文件 Server=F:\\myweb\\MySql Server\\bin\\mysqld.exe
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
修改mysql5.5默認(rèn)編碼(圖文步驟修改為utf-8編碼)
安裝mysql后,啟動(dòng)服務(wù)并登陸,使用show variables命令可查看mysql數(shù)據(jù)庫(kù)的默認(rèn)編碼;mysql數(shù)據(jù)庫(kù)的默認(rèn)編碼并不是utf-8如何修改呢,本文將詳細(xì)介紹,感興趣的朋友可以了解下2013-01-01mysql-8.0.15-winx64 解壓版安裝教程及退出的三種方式
本文通過(guò)圖文并茂的形式給大家介紹了mysql-8.0.15-winx64 解壓版安裝,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04MySQL與Mongo簡(jiǎn)單的查詢實(shí)例代碼
本文通過(guò)一個(gè)實(shí)例給大家用MySQL和mongodb分別寫一個(gè)查詢,本文圖片并茂給大家介紹的非常詳細(xì),感興趣的朋友參考下吧2016-10-10mysql基于正則實(shí)現(xiàn)模糊替換字符串的方法分析
這篇文章主要介紹了mysql基于正則實(shí)現(xiàn)模糊替換字符串的方法,結(jié)合具體實(shí)例對(duì)比分析了使用正則實(shí)現(xiàn)mysql字符串替換的注意事項(xiàng)與相關(guān)操作技巧,需要的朋友可以參考下2017-03-03Mysql的max_allowed_packet設(shè)定
今天小編就為大家分享一篇關(guān)于Mysql的max_allowed_packet設(shè)定,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12