您好,登錄后才能下訂單哦!
本篇內容介紹了“MySQL中my.cnf文件的選項設置”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
mysqld服務器維護兩種變量。全局變量影響服務器的全局操作。會話變量影響具體客戶端連接相關操作。
可以在選項文件或命令行中設置全局變量。
用Set命令設置會話變量,當然它也可以設置全局變量。
就像oracle里面的初始化參數文件一樣。下面是一些常用的選項說明,MySQL的管方文檔上也有。
[@more@]
如
mysql> SET GLOBAL sort_buffer_size = 10 * 1024 * 1024;
mysql> SET SESSION sort_buffer_size = 10 * 1024 * 1024;
如果你想用SET語句限制系統變量可設的最大值,可以在服務器啟動時通過--maximum-var_name形式的選項來指定。
例如,要想防止query_cache_size的值運行時超過32MB,使用選項--maximum-query_cache_size=32M。
mysqld_safe選項
--basedir=path
MySQL安裝目錄的路徑。
--core-file-size
mysqld能夠創建的內核文件的大小。選項值傳遞給ulimit -c。
--datadir=path
數據目錄的路徑。
--defaults-file=path
讀取的代替通用選項文件的選項文件名。如果給出,必須首選該選項。
--log-error=path
將錯誤日志寫入給定的文件。
-nice=priority
使用nice程序根據給定值來設置服務器的調度優先級。
--open-files-limit=count
mysqld能夠打開的文件的數量。選項值傳遞給 ulimit -n。請注意你需要用root啟動mysqld_safe來保證正確工作!
--pid-file=path
進程ID文件的路徑。
--port=port_num
用來幀聽TCP/IP連接的端口號。端口號必須為1024或更大值,除非MySQL以root系統用戶運行。
每個mysqld的Unix套接字文件和TCP/IP端口號必須不同。
--ledir=path
包含mysqld程序的目錄的路徑。使用該選項來顯式表示服務器位置。
--no-defaults
不要讀任何選項文件。如果給出,必須首選該選項。
--skip-character-set-client-handshake
忽略客戶端發送的字符集信息,使用服務器的默認字符集。
--socket=path
用于本地連接的Unix套接字文件。
每個mysqld的Unix套接字文件和TCP/IP端口號必須不同。
--timezone=zone
為給定的選項值設置TZ時區環境變量。
--user={user_name | user_id}
以用戶名user_name或數字用戶ID user_id運行mysqld服務器。
該"用戶"指系統登錄賬戶,而不是 授權表中的MySQL用戶。
mysqld命令行選項
mysqld從[mysqld]和[server]組讀取選項
--ansi
使用標準(ANSI)SQL語法代替MySQL語法。
--basedir=path, -b path
MySQL安裝目錄的路徑。通常所有路徑根據該路徑來解析。
--bootstrap
mysql_install_db腳本使用該選項來創建MySQL授權表,不需要啟動MySQL服務器
--console
將錯誤日志消息寫入stderr和stdout,即使指定了--log-error。
--character_sets_dir=path
字符集安裝的目錄。
--chroot=path
通過chroot()系統調用在啟動過程中將mysqld服務器放入一個封閉環境中。這是推薦的一個安全措施。請注意使用該選項可以 限制LOAD DATA INFILE和SELECT ... INTO OUTFILE。
--character_set_server=charset
使用charset作為 默認服務器字符集。
--core_file
如果mysqld終止,寫內核文件。
--datadir=path, -h path
數據目錄的路徑。
--default_table_type=type
設置表的默認類型。
--debug[=debug_options], -# [debug_options]
如果MySQL配置了--with-debug,你可以使用該選項來獲得一個跟蹤文件,跟蹤mysqld正進行的操作。debug_options字符串通常為'd:t:o,file_name'。
--default_time_zone=type
設置默認服務器時區。該選項設置全局time_zone系統變量。默認時區與系統時區相同(用system_time_zone系統變量值給定)
--delay_key_write[= OFF | ON | ALL]
如何使用DELAYED KEYS選項。鍵寫入延遲會造成再次寫MyISAM表時鍵緩沖區不能被清空。該選項只適用MyISAM表。
OFF DELAY_KEY_WRITE被忽略。
ON MySQL在CREATE TABLE中用DELAY_KEY_WRITE選項。這是 默認值。
ALL 用啟用DELAY_KEY_WRITE選項創建表的相同方法對所有新打開表的進行處理。
如果啟用了DELAY_KEY_WRITE,說明使用該項的表的鍵緩沖區在每次更新索引時不被清空,只有關閉表時才清空。
但如果你使用該特性,你應用--myisam_recover選項啟動服務器,為所有MyISAM表添加自動檢查。
--external_locking
用系統鎖定。請注意如果你在lockd不能完全工作的系統上使用該選項(例如在Linux中),mysqld容易死鎖。
如果你在許多MySQL進程中使用該選項來更新MyISAM表,你必須確保滿足下述條件:
使用正被另一個進程更新的表的查詢的緩存不可使用。
不應在共享表中使用--delay-key-write=ALL或DELAY_KEY_WRITE=1。
最簡單的方法是結合使用--external-locking和--delay-key-write=OFF --query-cache-size=0。
(默認不能實現,因為在許多設置中,結合使用上述選項很有用)。
--flush
執行SQL語句后向硬盤上清空更改。一般情況執行SQL語句后 MySQL向硬盤寫入所有更改,讓操作系統處理與硬盤的同步。
--init_file=file
啟動時從該文件讀SQL語句。每個語句必須在同一行中并且不應包括注釋。
--language=lang_name, -L lang_name
用給定語言給出客戶端錯誤消息。默認情況下,mysqld用英語給出錯誤消息。
--large_pages
一些硬件/操作系統架構支持大于 默認值(通常4 KB)的內存頁。實際支持取決于使用的硬件和OS。
大量訪問內存的應用程序通過 使用較大的頁,降低了Translation Lookaside Buffer (TLB)損失,可以改善性能。
默認情況下該選項被禁用。
---log[=file], -l [file]
如果你想要知道mysqld內部發生了什么,你應該用--log[=file_name]或-l [file_name]選項啟動它。如果沒有給定file_name的值, 默認名是host_name.log。所有連接和語句被記錄到日志文件。當你懷疑在客戶端發生了錯誤并想確切地知道該客戶端發送給mysqld的語句時,該日志可能非常有用。
mysqld按照它接收的順序記錄語句到查詢日志。這可能與執行的順序不同。
--log_bin=[file]
二進制日志文件。將更改數據的所有查詢記入該文件。用于備份和復制。
建議指定一個文件名,否則MySQL使用host_name-bin作為日志文件基本名。
運行服務器時若啟用二進制日志則性能大約慢1%。
--binlog_do_db=db_name
告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,應將更新記錄到二進制日志中。
--binlog_ignore_db=db_name
告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,不應將更新保存到二進制日志中。
--log_error[=file]
該文件的日志錯誤和啟動消息.
如果你不指定文件名,MySQL使用host_name.err作為文件名。如果文件名沒有擴展名,則加上.err擴展名。
--log_isam[=file]
將所有MyISAM更改記入該文件
--log_slow_queries[=file]
將所有執行時間超過long_query_time 秒的查詢記入該文件。
--log_warnings, -W
將警告例如Aborted connection...打印到錯誤日志。建議啟用該選項,默認也是啟用的。
--memlock
將mysqld 進程鎖定在內存中。請注意使用該選項時需要以root運行服務器,但從安全考慮并不是一個好注意。
--myisam_recover [=option[,option...]]]
存儲引擎MyISAM設置為恢復模式。該選項值是DEFAULT、BACKUP、FORCE或QUICK值的任何組合。
如果你指定多個值,用逗號間隔開。
使用如果該選項,當mysqld打開MyISAM表時,檢查是否表標記為崩潰或沒有正確關閉。
如果是這種情況,mysqld則檢查 表。如果表被破壞,mysqld試圖維護它。
DEFAULT 與沒有使用--myisam-recover選項相同。
BACKUP 如果在恢復過程中,數據文件被更改了,將tbl_name.MYD文件備份為tbl_name-datetime.BAK。
FORCE 即使.MYD文件將丟掉多個行也進行恢復。
QUICK 如果沒有刪除塊,不要檢查表中的行。
--open_files_limit=count
用來更改mysqld文件描述符的數量。
--pid_file=path
mysqld_safe使用的進程ID文件的路徑。
--port=port_num, -P port_num
幀聽TCP/IP連接時使用的端口號。
--safe_mode
跳過一些優化階段。
--skip_bdb
禁用BDB存儲引擎。這樣可以節省內存,并可能加速某些操作。如果你需要BDB表則不要使用該選項。
--skip_concurrent_insert
關閉在同一時間在MyISAM表中選擇和插入的能力。(只有你發現缺陷時才使用該選項)。
--skip_grant_tables
該選項使服務器不使用權限系統。該權限允許訪問服務器的用戶不受限制地訪問所有數據庫
--skip_external_locking
不要使用系統鎖定。
--skip_host_cache
為了更快地在名稱-IP之間進行解析,不要使用內部主機名緩存。相反,每次客戶端連接時查詢DNS服務器。
--skip_innodb
禁用InnoDB存儲引擎。這樣可以節省內存,并可能加速某些操作。
--skip_networking
不幀聽TCP/IP連接。必須通過命名管道或共享內存(在Windows中)或Unix套接字文件(在Unix中)完成mysqld的相互操作。
對于只允許本地客戶端的系統,大力推薦該選項。
--socket=path
在Unix中,該選項指定用于本地連接的Unix套接字文件。
--skip_safemalloc
如果MySQL配置了--with-debug=full,所有MySQL程序在內存分配和釋放時檢查內存是否溢出。
檢查很慢,因此如果你不需要你可以用--skip-safemalloc選項來避免。
--transaction_isolation=level
設置默認事務隔離級別,可以READ-UNCOMMITTED、READ-COMMITTEE、REPEATABLE-READ或SERIALIZABLE。
默認為REPEATABLE-READ。
--tmpdir=path, -t path
創建臨時文件的目錄路徑。
--temp_pool
該選項使服務器創建的大多數臨時文件使用一系列文件名,而不是每個新文件使用唯一的文件名。
--bdb_cache_size
為BDB表緩存索引和行分配的緩沖區的大小。如果你不使用BDB表,你應用--skip-bdb啟動mysqld以便不浪費該緩存。
--bdb_home
BDB表基準目錄。應與datadir變量的值相同。
--bdb_log_buffer_size
為BDB表緩存索引和行分配的緩沖區的大小。
-- bdb_logdir
BDB存儲引擎寫它日志文件的目錄。
--bdb_max_lock
在BDB表下可以激活的最大鎖數(默認為10,000)。
-- binlog_cache_size
在事務過程中容納二進制日志SQL語句的緩存大小。
二進制日志緩存是服務器支持事務存儲引擎并且服務器啟用了二進制日志(--log-bin選項)的前提下為每個客戶端分配的內存。
--bulk_insert_buffer_size
MyISAM 使用專用樹狀緩存來使INSERT ... SELECT、INSERT ... VALUES (...)、(...)、 ...和LOAD DATA INFILE的大塊插
入更快。注釋:只有向非空表添加數據時才使用該緩存。 默認值是8MB。
--character_set_client
來自客戶端的語句的字符集。
--character_set_database
默認數據庫使用的字符集。當默認數據庫更改時,服務器則設置該變量。
如果沒有默認數據庫,變量的同character_set_server。
--character_set_results
用于向客戶端返回查詢結果的字符集。
--character_sets_dir
字符集安裝目錄。
--completion_type
事務結束類型:
如果該值為0(默認),COMMIT和ROLLBACK不受影響。
如果該值為1,COMMIT和ROLLBACK分別等同于COMMIT AND CHAIN和ROLLBACK AND CHAIN。
(新事務用剛剛結束的事務相同的間隔等級立即啟動)。
如果該值為2,COMMIT和ROLLBACK分別等同于COMMIT RELEASE和ROLLBACK RELEASE。(事務終止后,服務器斷開)。
--concurrent_insert
如果為ON(默認值),MySQL允許INSERT和SELECT語句在中間沒有空數據塊的MyISAM表中并行運行。
0 關
1 (默認)在沒有空數據塊的MyISAM表中啟用并行插入
2 為所有MyISAM表啟用并行插入。如果表有空記錄或正被另一線程使用,新行將插入到表的最后。
如果表未使用,MySQL將進行普通讀鎖定并將新行插入空記錄。
-- delayed_insert_limit
插入delayed_insert_limit 延遲行后,INSERT DELAYED 處理器線程檢查是否有掛起的SELECT語句。如果有,在繼續插入延遲的行之前,允許它們先執行。
-- delayed_insert_timeout
INSERT DELAYED處理器線程終止前應等待INSERT語句的時間。
--delayed_queue_size
這是各個表中處理INSERT DELAYED語句時隊列中行的數量限制。如果隊列滿了,執行INSERT DELAYED語句的客戶端應等待直到隊列內再有空間。
--div_precision_increment
該變量說明用/操作符執行除操作的結果可增加的精確度的位數。 默認值是4。最小和最大值分別為0和30。
-- expire_logs_days
二進制日志自動刪除的天數。默認值為0,表示“沒有自動刪除”。啟動時和二進制日志循環時可能刪除。
--flush_time
如果設為非零值,每隔flush_time秒則關閉所有表以釋放硬盤資源并同步未清空的數據。
我們建議只在Windows 9x或Me,或有最小資源的系統中使用該選項。
--init_connect
服務器為每個連接的客戶端執行的字符串。字符串由一個或多個SQL語句組成。要想指定多個語句,用分號間隔開。
例如:[mysqld]
init_connect='SET AUTOCOMMIT=0'
-- join_buffer_size
用于完全聯接的緩沖區的大小(當不使用索引的時候使用聯接操作)。
--key_buffer_size
MyISAM表的索引塊分配了緩沖區,由所有線程共享。key_buffer_size是索引塊緩沖區的大小。鍵值緩沖區即為鍵值緩存。
key_buffer_size的最大允許設定值為4GB。通常為主要運行MySQL的機器內存的25%。
以通過執行SHOW STATUS語句并檢查Key_read_requests、Key_reads、Key_write_requests和Key_writes狀態變量來檢查鍵值緩沖區的性能。
Key_reads/Key_read_requests比例一般應小于0.01。如果你使用更新和刪除,Key_writes/Key_write_requests比例通常接近1,但如果你更新時會同時影響到多行或如果你正使用DELAY_KEY_WRITE表選項,可能小得多。
1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
該值為約數,因為鍵值緩沖區的部分空間被分配用作內部管理結構。
-- key_cache_block_size
鍵值緩存內塊的字節大小。默認值是1024。
-- locked_in_memory
是否用-memlock將mysqld鎖在內存中。
-- lower_case_file_system
該變量說明是否數據目錄所在的文件系統對文件名的大小寫敏感。ON說明對文件名的大小寫不敏感,OFF表示敏感。
-- lower_case_table_names
如果設置為1,表名用小寫保存到硬盤上,并且表名比較時不對大小寫敏感。
如果設置為2,按照指定的保存表名,但按照小寫來比較。
數據庫中的每個表至少對應數據庫目錄中的一個文件(也可能是多個,取決于存儲引擎)。
因此,所使用操作系統的大小寫敏感性決定了數據庫名和表名的大小寫敏感性。
這說明在大多數Unix中數據庫名和表名對大小寫敏感,而在Windows中對大小寫不敏感。
-- max_binlog_cache_size
如果多語句事務需要更大的內存,你會得到錯誤Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage。
-- max_binlog_size
如果二進制日志寫入的內容超出給定值,日志就會發生滾動。你不能將該變量設置為大于1GB或小于4096字節。 默認值是1GB。
如果你正使用事務:事務以一個塊寫入二進制日志,因此不不能被幾個二進制日志拆分。
因此,如果你有大的事務,二進制日志可能會大于max_binlog_size。
-- max_connect_errors
如果中斷的與主機的連接超過該數目,該主機則阻塞后面的連接。你可以用 FLUSH HOSTS語句解鎖鎖定的主機。
-- max_connections
允許的并行客戶端連接數目。
-- max_delayed_threads
不要啟動大于該數目的線程來處理INSERT DELAYED語句。如果所有INSERT DELAYED線程已經在使用,
你想在新表中插入數據,行 插入時好像未指定DELAYED屬性。如果你將該值設置為0,MySQL不會創建線程來處理DELAYED行;
其結果是完全禁用了DELAYED。
-- max_error_count
保存由SHOW ERRORS或SHOW WARNINGS顯示的錯誤、警告和注解的最大數目。
--max_heap_table_size
該變量設置MEMORY (HEAP)表可以增長到的最大空間大小。該變量用來計算MEMORY表的MAX_ROWS值。
在已有的MEMORY表上設置該變量沒有效果,除非用CREATE TABLE或TRUNCATE TABLE等語句重新創建表。
-- max_join_size
不允許可能需要檢查多于max_join_size行(為單個表語句)或行組合(為多個表語句)或可能執行大于max_join_size次硬盤查詢的SELECT語句。通過設置該值,你可以捕獲鍵使用不正確并可能花很長時間的SELECT語句。
將該變量設置為DEFAULT之外的值,將SQL_BIG_SELECTS的值重設為0。
-- max_length_for_sort_data
確定使用的filesort算法的索引值大小的限值。
-- max_relay_log_size
如果復制從服務器寫入中繼日志時超出給定值,則滾動中繼日志。通過該變量你可以對中繼日志和二進制日志設置不同的限制。但是,將該變量設置為0,MySQL可以對二進制日志和中繼日志使用max_binlog_size。max_relay_log_size必須設置在4096字節和1GB(包括)之間,或為0。 默認值是0。
--- max_seeks_for_key
限制根據鍵值尋找行時的最大搜索數。MySQL優化器假定當用掃描鍵在表內搜索匹配的行時,不需要超過該數量的鍵值搜索,而不管鍵的實際基數是什么。將該值設置為較低的值(100?),你可以強制MySQL選擇鍵值而不選擇表掃描。
---Max_sort_length
當排序BLOB或TEXT值時使用的字節數。只使用每個值的前max_sort_length字節;其它的被忽略。
--max_tmp_tables
客戶端可以同時打開的臨時表的最大數。
--- max_user_connections
任何給定的MySQL賬戶允許的最大同時連接數。0值表示“沒有限制”。
--- max_write_lock_count
超過寫鎖定限制后,允許部分讀鎖定。
-- max_allowed_packet
包或任何生成的/中間字符串的最大大小。
包消息緩沖區初始化為net_buffer_length字節,但需要時可以增長到max_allowed_packet字節。
該值默認很小,以捕獲大的(可能是錯誤的)數據包。
如果你使用大的BLOB 列或長字符串,你必須增加該值。應同你想要使用的最大的BLOB一樣大。
max_allowed_packet的協議限制為1GB。
---myisam_data_pointer_size
默認指針大小,單位是字節,當未指定MAX_ROWS選項時,CREATE TABLE使用該變量創建MyISAM表。
該變量不能小于2或大于7。 默認值是6。
--- myisam_sort_buffer_size
當在REPAIR TABLE或用CREATE INDEX創建索引或ALTER TABLE過程中排序 MyISAM索引分配的緩沖區。
--- myisam_max_sort_file_size
重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE過程中)時,允許MySQL使用的臨時文件的最大空間大小。
如果文件的大小超過該值,則使用鍵值緩存創建索引,要慢得多。該值的單位為字節。
---myisam_stats_method
當為MyISAM表搜集關于索引值分發的統計信息時服務器如何處理NULL值。
該變量有兩個可能的值,nulls_equal和nulls_unequal。
nulls_equal表示所有的null值是相同的,nulls_unequal表示把每個null值都當成一個不同的值。
-- net_buffer_length
在查詢之間將通信緩沖區重設為該值。一般情況不應改變,但如果內存很小,
可以將它設置為期望的客戶端發送的SQL語句的長度。如果語句超出該長度,緩沖區自動擴大,直到max_allowed_packet字節。
--- query_cache_limit
不要緩存大于該值的結果。默認值是1048576(1MB)。
---query_cache_min_res_unit
查詢緩存分配的最小塊的大小(字節)。 默認值是4096(4KB)。
--- query_cache_size
為緩存查詢結果分配的內存的數量。默認值是0,即禁用查詢緩存。
--- query_cache_type
設置查詢緩存類型。該變量默認設為ON。
0或OFF 不要緩存或查詢結果。請注意這樣不會取消分配的查詢緩存區。要想取消,你應將query_cache_size設置為0。
1或ON 緩存除了以SELECT SQL_NO_CACHE開頭的所有查詢結果。
2或DEMAND 只緩存以SELECT SQL_NO_CACHE開頭的查詢結果。
--- query_cache_wlock_invalidate
一般情況,當客戶端對MyISAM表進行WRITE鎖定時,如果查詢結果位于查詢緩存中,則其它客戶端未被鎖定,
可以對該表進行查詢。將該變量設置為1,則可以對表進行WRITE鎖定,使查詢緩存內所有對該表進行的查詢變得非法。
這樣當鎖定生效時,可以強制其它試圖訪問表的客戶端來等待。
--- query_prealloc_size
用于查詢分析和執行的固定緩沖區的大小。在查詢之間該緩沖區不釋放。如果你執行復雜查詢,
分配更大的query_prealloc_size值可以幫助提高性能,因為它可以降低查詢過程中服務器分配內存的需求。
--- read_buffer_size
每個線程連續掃描時為掃描的每個表分配的緩沖區的大小(字節)。如果進行多次連續掃描,可能需要增加該值,
默認值為131072。
--- read_only
當變量對復制從服務器設置為ON時,從服務器不允許更新,除非通過從服務器的線程或用戶擁有SUPER權限。
--- relay_log_purge
當不再需要中繼日志時禁用或啟用自動清空中繼日志。默認值是1(啟用)。
--read_rnd_buffer_size
當排序后按排序后的順序讀取行時,則通過該緩沖區讀取行,避免搜索硬盤。將該變量設置為較大的值可以大大改進ORDER BY的性能。但是,這是為每個客戶端分配的緩沖區,因此你不應將全局變量設置為較大的值。相反,只為需要運行大查詢的客戶端更改會話變量。
--- skip_networking
如果服務器只允許本地(非TCP/IP)連接,該值為ON。在Unix中,本地連接使用Unix套接字文件。
在Windows中,本地連接使用命名管道或共享內存
---sort_buffer_size
每個排序線程分配的緩沖區的大小。增加該值可以加快ORDER BY或GROUP BY操作。
---sync_binlog
如果為正,當每個sync_binlog'th寫入該二進制日志后,MySQL服務器將它的二進制日志同步到硬盤上(fdatasync())。
請注意如果在autocommit模式,每執行一個語句向二進制日志寫入一次,否則每個事務寫入一次。
---sync_frm
如果該變量設為1,當創建非臨時表時它的.frm文件被同步到硬盤上(fdatasync());這樣較慢但出現崩潰時較安全。
默認值為1。
--- table_cache
所有線程打開的表的數目。增大該值可以增加mysqld需要的文件描述符的數量。
你可以檢查Opened_tables狀態變量來檢查你是否需要增加表緩存。
---thread_cache_size
服務器應緩存多少線程以便重新使用。當客戶端斷開連接時,如果線程少于thread_cache_size,則客戶端的線程被放入緩存。當請求線程時如果允許可以從緩存中重新利用線程,并且只有當緩存空了時才會創建新線程。如果新連接很多,可以增加該變量以提高性能。(一般情況,如果線程執行得很好,性能提高不明顯)。檢查Connections和Threads_created狀態變量的差,可以看見線程緩存的效率。
“MySQL中my.cnf文件的選項設置”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。