日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL系統(tǒng)變量優(yōu)化的方法是什么

本篇內(nèi)容介紹了“MySQL系統(tǒng)變量優(yōu)化的方法是什么”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的榆社網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1、全局內(nèi)存緩沖區(qū)
1)key_buffer_size
    該變量是只存儲MyISAM索引信息的全局內(nèi)存緩沖區(qū)。在對應(yīng)的.MYI文件中的索引數(shù)據(jù)從磁盤上被讀取出來然后存入這個(gè)緩沖區(qū)。想要調(diào)整key_buffer_size的大小,只需要簡單統(tǒng)計(jì)所有MyISAM表中總索引的大小,然后隨著數(shù)據(jù)隨時(shí)間增長而調(diào)整。
當(dāng)這個(gè)索引碼緩沖區(qū)中沒有足夠的空間來存儲新的索引數(shù)據(jù)時(shí),將會用最近最少使用的的方法覆蓋掉舊的頁面。
2)innodb_buffer_pool_size
    innodb_buffer_pool_size是用來存儲所有InnoDB數(shù)據(jù)和索引的全局內(nèi)存緩沖區(qū)。對完全使用InnoDB的數(shù)據(jù)庫來說,這是個(gè)很重要的緩沖區(qū),一定要正確分配,不正確的分配這個(gè)緩沖區(qū)可能導(dǎo)致額外的磁盤IO開銷并降低查詢性能。
    常見的方法是把innodb_buffer_pool_size設(shè)定為RAM的80%,但是很多情況下這樣設(shè)定不合理,如RAM大小50G,而數(shù)據(jù)庫總量只有2G。
    可以使用SHOW GLOBAL STATUS或者SHOW ENGINE INNODB STATUS命令來監(jiān)控InnoDB緩沖池的使用情況。
mysql> SHOW GLOBAL STATUS LIKE 'innodb_buffer%';
+---------------------------------------+--------------------------------------------------+
| Variable_name                         | Value                                            |
+---------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status        | Dumping of buffer pool not started               |
| Innodb_buffer_pool_load_status        | Buffer pool(s) load completed at 180330 16:27:30 |
| Innodb_buffer_pool_resize_status      |                                                  |
| Innodb_buffer_pool_pages_data         | 51679                                            |
| Innodb_buffer_pool_bytes_data         | 846708736                                        |
| Innodb_buffer_pool_pages_dirty        | 0                                                |
| Innodb_buffer_pool_bytes_dirty        | 0                                                |
| Innodb_buffer_pool_pages_flushed      | 116888                                           |
| Innodb_buffer_pool_pages_free         | 1024                                             |
| Innodb_buffer_pool_pages_misc         | 4641                                             |
| Innodb_buffer_pool_pages_total        | 57344                                            |
| Innodb_buffer_pool_read_ahead_rnd     | 0                                                |
| Innodb_buffer_pool_read_ahead         | 0                                                |
| Innodb_buffer_pool_read_ahead_evicted | 0                                                |
| Innodb_buffer_pool_read_requests      | 91375799                                         |
| Innodb_buffer_pool_reads              | 380                                              |
| Innodb_buffer_pool_wait_free          | 0                                                |
| Innodb_buffer_pool_write_requests     | 41378543                                         |
+---------------------------------------+--------------------------------------------------+
mysql> SHOW ENGINE INNODB STATUS \G
*************************** 1. row ***************************
  Type: InnoDB
  Name: 
Status: 
=====================================
2018-04-10 14:29:36 0x7f6777c37700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 4 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 327 srv_active, 0 srv_shutdown, 942463 srv_idle
srv_master_thread log flush and writes: 942790
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 2095
OS WAIT ARRAY INFO: signal count 2039
RW-shared spins 0, rounds 469, OS waits 237
RW-excl spins 0, rounds 9654, OS waits 322
RW-sx spins 148, rounds 4422, OS waits 145
Spin rounds per wait: 469.00 RW-shared, 9654.00 RW-excl, 29.88 RW-sx
------------
TRANSACTIONS
------------
Trx id counter 10166
Purge done for trx's n:o < 10166 undo n:o < 0 state: running but idle
History list length 56
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 421558371456848, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request (insert buffer thread)
I/O thread 1 state: waiting for i/o request (log thread)
I/O thread 2 state: waiting for i/o request (read thread)
I/O thread 3 state: waiting for i/o request (read thread)
I/O thread 4 state: waiting for i/o request (read thread)
I/O thread 5 state: waiting for i/o request (read thread)
I/O thread 6 state: waiting for i/o request (write thread)
I/O thread 7 state: waiting for i/o request (write thread)
I/O thread 8 state: waiting for i/o request (write thread)
I/O thread 9 state: waiting for i/o request (write thread)
Pending normal aio reads: [0, 0, 0, 0] , aio writes: [0, 0, 0, 0] ,
 ibuf aio reads:, log i/o's:, sync i/o's:
Pending flushes (fsync) log: 0; buffer pool: 0
894 OS file reads, 125124 OS file writes, 6256 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
 insert 0, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 232523, node heap has 0 buffer(s)
Hash table size 232523, node heap has 0 buffer(s)
Hash table size 232523, node heap has 0 buffer(s)
Hash table size 232523, node heap has 3093 buffer(s)
Hash table size 232523, node heap has 1 buffer(s)
Hash table size 232523, node heap has 1545 buffer(s)
Hash table size 232523, node heap has 1 buffer(s)
Hash table size 232523, node heap has 1 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 1258938797
Log flushed up to   1258938797
Pages flushed up to 1258938797
Last checkpoint at  1258938788
0 pending log flushes, 0 pending chkp writes
1286 log i/o's done, 0.00 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 962002944
Dictionary memory allocated 320881
Buffer pool size   57344
Free buffers       1024
Database pages     51679
Old database pages 19056
Modified db pages  0
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 335, not young 124
0.00 youngs/s, 0.00 non-youngs/s
Pages read 379, created 60479, written 118447
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 51679, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Process ID=10779, Main thread ID=140081746663168, state: sleeping
Number of rows inserted 10501644, updated 2100327, deleted 0, read 21003388
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
3)innodb_additional_mem_pool_size
    innodb_additional_mem_pool_size變量為InnoDB特定數(shù)據(jù)字典信息定義了內(nèi)存池。對于這個(gè)變量,沒有什么好的方法來確定它的最優(yōu)值,一般將其設(shè)置為10M。
4)query_cache_size
    query_cache_size變量是一個(gè)用來存儲經(jīng)常緩存過的查詢?nèi)謨?nèi)存緩沖區(qū)。使用query_cache_type變量可以總體啟用和禁用查詢緩存。啟用時(shí)query_cache_size的值可能為0,這表示沒有查詢需要被緩存。而MySQL實(shí)例可以通過動態(tài)的改變query_cache_size的值在某個(gè)時(shí)間仍然可以支持緩存。
2、全局/會話內(nèi)存緩沖區(qū)
1)max_heap_table_size
     這個(gè)變量定義了MySQL MEMORY存儲引擎表的最大容量。當(dāng)某個(gè)表容量超過最大值時(shí),應(yīng)用程序會收到下面的信息。
mysql> set session max_heap_table_size=1024*1024;
Query OK, 0 rows affected (0.02 sec)
mysql> create table test (id int(10),user_type varchar(20),code int(10)) engine=memory;
Query OK, 0 rows affected (0.02 sec)
mysql> insert into test select * from t_user_info_tmp_bak;
ERROR 1114 (HY000): The table 'test' is full
    這個(gè)變量有一個(gè)全局默認(rèn)值,而且在上例的每個(gè)線程上也可以指定這個(gè)變量的值。MySQL并沒有為所有MEMORY表的總?cè)萘孔鋈魏蜗拗?。這個(gè)變量僅用于單個(gè)表。
MEMORY存儲引擎表的總大小可以通過SHOW TABLE STATUS命令和INFORMATION_SCHEMA.TABLES表來確定。
2)tmp_table_size
    max_heap_table_size和tmp_table_size變量中的最小值定義了內(nèi)部表的最大容量,內(nèi)部臨時(shí)表用于存儲在內(nèi)存中的查詢執(zhí)行過程。如果在explain select的結(jié)果中的extra列中出現(xiàn)了using temporary,那么可以判斷在查詢執(zhí)行過程中用到了內(nèi)部臨時(shí)表。
    MySQL使用memory存儲引擎來支持這些內(nèi)部臨時(shí)表,但是內(nèi)部臨時(shí)表的容量超過max_heap_table_size和tmp_table_size中的最小值是,MySQL會在臨時(shí)位置創(chuàng)建一個(gè)基于MyISAM磁盤的表。
3、會話緩沖區(qū)
1)join_buffer_size
    join_buffer_size定義了每個(gè)線程的內(nèi)存緩沖區(qū),當(dāng)查詢必須連接兩個(gè)表的數(shù)據(jù)集并且不能使用索引時(shí),這個(gè)緩沖區(qū)會被用到。這個(gè)緩沖區(qū)是專門為每個(gè)線程的索引連接操作準(zhǔn)備的??梢酝ㄟ^查詢計(jì)劃中Extra列的值為Using join buffer來證明使用了這個(gè)緩沖區(qū)。建議這個(gè)緩沖區(qū)設(shè)置為默認(rèn)大小。增加這個(gè)緩沖區(qū)的大小也不會加快連接操作的速度。
2)sort_buffer_size
    這個(gè)變量定義了每個(gè)線程用于對結(jié)果集排序的每線程緩沖區(qū)??梢酝ㄟ^查詢計(jì)劃中extra列的值為Using file-sort來確定使用了這個(gè)緩沖區(qū)。不推薦增加這個(gè)緩沖區(qū)的大小,因?yàn)檫@個(gè)緩沖區(qū)是完全分配給每個(gè)請求的,而且當(dāng)默認(rèn)值太大時(shí)可能會降低查詢的執(zhí)行速度。
3)read_buffer_size
    當(dāng)SQL查詢執(zhí)行連續(xù)的表數(shù)據(jù)掃描時(shí)會用到這個(gè)緩沖區(qū)。只有在大量連續(xù)表數(shù)據(jù)掃描時(shí)才推薦增加這個(gè)緩沖區(qū)的大小。
4)read_rnd_buffer_size
    這個(gè)緩沖區(qū)用來存儲那些作為排序操作的結(jié)果被讀取的數(shù)據(jù)。這個(gè)緩沖區(qū)和read_buffer_size的不同之處在于,他讀取的連續(xù)數(shù)據(jù)是和數(shù)據(jù)在磁盤上的存儲方式相關(guān)的。只有在執(zhí)行大型ORDER BY語句時(shí)才推薦增加這個(gè)緩沖區(qū)的大小。
4、有關(guān)基礎(chǔ)工具的變量
1)slow_query_log
    這個(gè)布爾類型的變量可以啟用執(zhí)行緩慢的查詢的日志功能,日志將會報(bào)告索引執(zhí)行時(shí)間超過long_query_time變量值的查詢。
2)slow_query_log_file
    這個(gè)變量定義了當(dāng)慢查詢?nèi)罩竟δ荛_啟時(shí)保存所有被記錄的查詢文件的文件名。這個(gè)是全局變量,可以動態(tài)改變它的值。
3)general_log
    這個(gè)變量用來啟用記錄每條查詢執(zhí)行情況的全面查詢?nèi)罩?。這個(gè)變量只能在每個(gè)服務(wù)器實(shí)例值上啟用或者禁用。這是個(gè)全局變量,可以動態(tài)改變它的值。
4)general_log_file
這個(gè)變量定義了記錄了當(dāng)全面日志啟用時(shí)所有SQL查詢的文件名,這是個(gè)全局變量,可以動態(tài)改變它的值。
5)long_query_time
    這個(gè)變量指定了一個(gè)查詢執(zhí)行時(shí)間的限制,當(dāng)慢查詢?nèi)罩竟δ軉⒂脮r(shí),執(zhí)行時(shí)間超過這個(gè)限制的查詢都會被記錄在慢查詢?nèi)罩局小?br/>6)log_output
    這個(gè)變量定義了慢查詢?nèi)罩竞腿娌樵內(nèi)罩镜妮敵鑫恢?,有效的選項(xiàng)有file,table,none。當(dāng)定義輸出位置為file是,日志的輸出文件分別由slow_query_log_file和general_log_file系統(tǒng)變量來定義。如果這個(gè)變量為table,日志輸出將會分別記錄在mysql.slow_log和mysql.general_log表中。這兩個(gè)表是在內(nèi)部以CSV存儲引擎定義的,所以不支持任何索引。這是個(gè)全局變量,可被動態(tài)定義。
5、其他優(yōu)化變量
1)optimizer_switch
   這個(gè)變量定義了一系列MySQL查詢優(yōu)化器特性的高級開關(guān),可以用來關(guān)閉(默認(rèn)是激活狀態(tài))三種不同的索引合并條件以及引擎下推條件。
2)default_storage_engine
    當(dāng)未指定ENGINE值時(shí),這個(gè)變量用來為create table命令指定存儲引擎。
3)max_allowed_packet
    可以用max_allowed_packet變量來定義SQL查詢結(jié)果集的最大值。增大這個(gè)值會運(yùn)行查詢返回更大的結(jié)果集。

“MySQL系統(tǒng)變量優(yōu)化的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


文章名稱:MySQL系統(tǒng)變量優(yōu)化的方法是什么
本文來源:http://www.dlmjj.cn/article/ppjdgi.html