MySQL配置文件my.ini的使用解讀
my.ini 是啥玩意?
my.ini是MySQL數(shù)據(jù)庫中使用的配置文件,修改這個文件可以達到更新配置的目的。
my.ini 在哪放著呢?
my.ini存放在MySql安裝的根目錄,如圖所示:(我比較懶,用的WAMP,大家找自己的安裝目錄即可)

my.ini的配置內容介紹
其實大體可以分為兩部分:客戶端的參數(shù)、服務器參數(shù)。
其中服務器參數(shù)里還包括 InnoDB存儲引擎參數(shù)。
客戶端的參數(shù)
下面顯示的是客戶端的參數(shù),[client]和[mysql]都是客戶端,下面是參數(shù)簡介:
port參數(shù)表示的是MySQL數(shù)據(jù)庫的端口,默認的端口是3306,如果你需要更改端口號的話,就可以通過在這里修改。default-character-set參數(shù)是客戶端默認的字符集,如果你希望它支持中文,可以設置成gbk或者utf8。- 這里還有一個
password參數(shù),在這里設置了password參數(shù)的值就可以在登陸時不用輸入密碼直接進入
# 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
服務器斷參數(shù)
以下是參數(shù)的介紹:
port參數(shù)也是表示數(shù)據(jù)庫的端口。basedir參數(shù)表示MySQL的安裝路徑。datadir參數(shù)表示MySQL數(shù)據(jù)文件的存儲位置,也是數(shù)據(jù)庫表的存放位置。default-character-set參數(shù)表示默認的字符集,這個字符集是服務器端的。default-storage-engine參數(shù)默認的存儲引擎。- 這里有兩個引擎 MyISAM 和 InnoDB ,用什么看你需求,詳細介紹可以參考下面這篇文章:http://www.dbjr.com.cn/article/270995.htm
sql-mode參數(shù)表示SQL模式的參數(shù),通過這個參數(shù)可以設置檢驗SQL語句的嚴格程度。max_connections參數(shù)表示允許同時訪問MySQL服務器的最大連接數(shù),其中一個連接是保留的,留給管理員專用的。query_cache_size參數(shù)表示查詢時的緩存大小,緩存中可以存儲以前通過select語句查詢過的信息,再次查詢時就可以直接從緩存中拿出信息。table_cache參數(shù)表示所有進程打開表的總數(shù)。tmp_table_size參數(shù)表示內存中臨時表的總數(shù)。thread_cache_size參數(shù)表示保留客戶端線程的緩存。myisam_max_sort_file_size參數(shù)表示MySQL重建索引時所允許的最大臨時文件的大小。myisam_sort_buffer_size參數(shù)表示重建索引時的緩存大小。key_buffer_size參數(shù)表示關鍵詞的緩存大小。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存儲引擎使用的參數(shù):
以下是參數(shù)的簡介:
innodb_additional_mem_pool_size參數(shù)表示附加的內存池,用來存儲InnoDB表的內容。innodb_flush_log_at_trx_commit參數(shù)是設置提交日志的時機,若設置為1,InnoDB會在每次提交后將事務日志寫到磁盤上。innodb_log_buffer_size參數(shù)表示用來存儲日志數(shù)據(jù)的緩存區(qū)的大小。innodb_buffer_pool_size參數(shù)表示緩存的大小,InnoDB使用一個緩沖池類保存索引和原始數(shù)據(jù)。innodb_log_file_size參數(shù)表示日志文件的大小。innodb_thread_concurrency參數(shù)表示在InnoDB存儲引擎允許的線程最大數(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 # 設置mysql的安裝目錄 basedir=F:\\Hzq Soft\\MySql Server 51GA # 設置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄,必須是data,或者是\\xxx-data datadir=F:\\Hzq Soft\\MySql Server 51GA\\data #innodb_log_arch_dir 默認datadir #innodb_log_group_home_dir 默認datadir # 設置mysql服務器的字符集,默認編碼 default-character-set=utf8 #連接數(shù)的操作系統(tǒng)監(jiān)聽隊列數(shù)量,如果經(jīng)常出現(xiàn)“拒絕連接”錯誤可適當增加此值 back_log = 50 #不使用接聽TCP / IP端口方法,mysqld通過命名管道連接 #skip-networking # 最大連接數(shù)量 max_connections = 90 #打開表的線程數(shù)量限定,最大4096,除非用mysqld_safe打開限制 table_open_cache = 2048 #MySql 服務接收針對每個進程最大查詢包大小 max_allowed_packet = 16M #作用于SQL查詢單筆處理使用的內存緩存,如果一筆操作的二進制數(shù)據(jù)超過了限定大小,將會在磁盤上開辟空間處理,一般設為 1-2M即可,默認1M binlog_cache_size = 2M #單個內存表的最大值限定 max_heap_table_size = 64M #為每個線程分配的排序緩沖大小 sort_buffer_size = 8M #join 連表操作的緩沖大小,根據(jù)實際業(yè)務來設置,默認8M join_buffer_size = 32M #操作多少個離開連接的線程的緩存 thread_cache_size = 8 #并發(fā)線程數(shù)量,默認為8,可適當增加到2倍以內。如果有多個CPU可以乘 上CPU的數(shù)量。雙核CPU可以乘 上當前最核數(shù)再乘 上70%-85% thread_concurrency = 16 #專用于具體SQL的緩存,如果提交的查詢與幾次中的某查詢相同,并且在query緩存中存在,則直接返回緩存中的結果。 query_cache_size = 64M #對應上一條設置,當查詢的結果超過下面設置的大小時,將不會趣入到上面設置的緩存區(qū)中,避免了一個大的結果占據(jù)大量緩存。 query_cache_limit = 2M #設置加全文檢索中的最小單詞長度。 #ft_min_word_len = 4 #CREATE TABLE 語句的默認表類型,如果不自己指定類型,則使用下行的類型 default-storage-engine = InnoDB #線程堆棧大小,mysql說它自己用的堆棧大小不超過64K。這個值可適當設高一點(在RCA的項目中都是共用同一個數(shù)據(jù)庫連接的),默認192K thread_stack = 800K #設置事務處理的級別,默認 REPEATABLE-READ,一般用它就即可,以下二行按順序對應, #可讀寫未提交的數(shù)據(jù),創(chuàng)建未提交的數(shù)據(jù)副本讀寫,未提交之前可讀不可寫,只允許串行序列招行事務。 # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE transaction_isolation = REPEATABLE-READ #單一內存臨時表在內存中的大小,超過此值自動轉換到磁盤操作 tmp_table_size = 64M #啟動二進制日志功能,可通過它實現(xiàn)時間點恢復最新的備份 #log-bin=mysql-bin #二進制日志格式,對就上一條,-建議混合格式 #binlog_format=mixed #轉換查詢?yōu)榫徛樵? slow_query_log #對應上一條,如果一個查詢超過了下條設定的時間則執(zhí)行上一條。 long_query_time = 2 #自定義主機ID識別符,用于主從或多服務器之間識別,為 一個 int 類型 server-id = 1 #一般用來緩存MyISAM表的主鍵,也用于臨時的磁盤表緩存主鍵,上面多次出現(xiàn)臨時磁盤表,所以就算不用MyISAM也最好為其設置一個不小的值,默認32M key_buffer_size = 56M #全表掃描MyISAM表時的緩存,每個線程擁有下行的大小。 read_buffer_size = 2M #排序操作時與磁盤之間的緩存,分到每個線程,默認16M read_rnd_buffer_size = 16M #MyISAM使用特殊樹形進行批量插入時的緩存,如insert ... values(..)(..)(..) bulk_insert_buffer_size = 64M #MyISAM索引文件的最大限定, myisam_max_sort_file_size = 12G #如果一個myisam表有一個以上的索引, MyISAM可以使用一個以上線程來排序并行它們。較耗硬件資源,如果你的環(huán)境不錯,可以增加此值。 myisam_repair_threads = 2 #自動檢查和修復無法正確關閉MyISAM表。 myisam_recover # *** INNODB Specific options *** #開啟下條將會禁用 INNODB #skip-innodb #一般不用設置或者說設了也沒多大用,InnoDB會自己與操作系統(tǒng)交互管理其附加內存池所使用InnoDB的存儲數(shù)據(jù)的大小 innodb_additional_mem_pool_size = 16M #innodb整體緩沖池大小,不宜過大,設為本地內存的 50%-75% 比較合適,在本機開發(fā)過程中可以設得較小一點如 64M,256M innodb_buffer_pool_size = 256M #InnoDB的數(shù)據(jù)存儲在一個或多個數(shù)據(jù)文件組成的表空間 innodb_data_file_path = ibdata1:10M:autoextend #用于異步IO操作的線程數(shù)量,默認為 4 ,可適當提高 innodb_file_io_threads = 8 #線程數(shù)內允許的InnoDB內核,不宜太高 innodb_thread_concurrency = 14 #InnoDB的事務日志快存行為,默認為 1,為0可減輕磁盤I/0操作,還有以為2 innodb_flush_log_at_trx_commit = 1 #InnoDB的用于的緩沖日志數(shù)據(jù)的大小 innodb_log_buffer_size = 16M #日志文件,可設置為25%-90%的總體緩存大小,默認 256M. 修改此項要先刪除datadir\ib_logfileXXX innodb_log_file_size = 256M #日志組數(shù)量,默認為3 innodb_log_files_in_group = 3 #InnoDB的日志文件位置。默認是MySQL的datadir #innodb_log_group_home_dir #InnoDB最大允許的臟頁緩沖池的百分比,默認90 innodb_max_dirty_pages_pct = 90 #事務死鎖超時設定 innodb_lock_wait_timeout = 120 [client] port = 3306 socket = /tmp/mysql.sock # 設置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服務啟動啟動的文件 Server=F:\\myweb\\MySql Server\\bin\\mysqld.exe
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
修改mysql5.5默認編碼(圖文步驟修改為utf-8編碼)
安裝mysql后,啟動服務并登陸,使用show variables命令可查看mysql數(shù)據(jù)庫的默認編碼;mysql數(shù)據(jù)庫的默認編碼并不是utf-8如何修改呢,本文將詳細介紹,感興趣的朋友可以了解下2013-01-01
mysql-8.0.15-winx64 解壓版安裝教程及退出的三種方式
本文通過圖文并茂的形式給大家介紹了mysql-8.0.15-winx64 解壓版安裝,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04

