成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MySQL中怎么實(shí)現(xiàn)線程共享內(nèi)存參數(shù)-創(chuàng)新互聯(lián)

本篇文章為大家展示了MySQL中怎么實(shí)現(xiàn)線程共享內(nèi)存參數(shù),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到交口網(wǎng)站設(shè)計(jì)與交口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋交口地區(qū)。

MySQL線程共享內(nèi)存參數(shù)
 
全局共享內(nèi)存主要是 MySQL Instance(d進(jìn)程)以及底層存儲(chǔ)引擎用來暫存各種全局運(yùn)算及可共享的暫存信息,如存儲(chǔ)查詢緩存的 Query Cache,緩存連接線程的 Thread Cache,緩存表文件句柄信息的 Table Cache,緩存二進(jìn)制日志的 BinLog Buffer, 緩存 MyISAM 存儲(chǔ)引擎索引鍵的 Key Buffer以及存儲(chǔ) InnoDB 數(shù)據(jù)和索引的 InnoDB Buffer Pool 等等。下面針對 MySQL 主要的共享內(nèi)存進(jìn)行一個(gè)簡單的分析。  www.2cto.com  
 
查詢緩存(Query Cache):查詢緩存是 MySQL 比較獨(dú)特的一個(gè)緩存區(qū)域,用來緩存特定 Query 的結(jié)果集(Result Set)信息,且共享給所有客戶端。通過對 Query 語句進(jìn)行特定的 Hash 計(jì)算之后與結(jié)果集對應(yīng)存放在 Query Cache 中,以提高完全相同的 Query 語句的相應(yīng)速度。當(dāng)我們打開 MySQL 的 Query Cache 之后,MySQL 接收到每一個(gè) SELECT 類型的 Query 之后都會(huì)首先通過固定的 Hash 算法得到該 Query 的 Hash 值,然后到 Query Cache 中查找是否有對應(yīng)的 Query Cache。如果有,則直接將 Cache 的結(jié)果集返回給客戶端。如果沒有,再進(jìn)行后續(xù)操作,得到對應(yīng)的結(jié)果集之后將該結(jié)果集緩存到 Query Cache 中,再返回給客戶端。

當(dāng)任何一個(gè)表的數(shù)據(jù)發(fā)生任何變化之后,與該表相關(guān)的所有 Query Cache 全部會(huì)失效,所以 Query Cache對變更比較頻繁的表并不是非常適用,但對那些變更較少的表是非常合適的,可以極大程度的提高查詢效率,如那些靜態(tài)資源表,配置表等等。為了盡可能高效的利用 Query Cache,MySQL 針對 Query Cache 設(shè)計(jì)了多個(gè) query_cache_type 值和兩個(gè) Query Hint:SQL_CACHE 和 SQL_NO_CACHE。當(dāng) query_cache_type 設(shè)置為0(或者 OFF)的時(shí)候不使用 Query Cache,當(dāng)設(shè)置為1(或者 ON)的時(shí)候,當(dāng)且僅當(dāng) Query 中使用了SQL_NO_CACHE 的時(shí)候 MySQL 會(huì)忽略 Query Cache,當(dāng) query_cache_type 設(shè)置為2(或者DEMAND)的時(shí)候,當(dāng)且僅當(dāng)Query 中使用了 SQL_CACHE 提示之后,MySQL 才會(huì)針對該 Query 使用 Query Cache??梢酝ㄟ^ query_cache_size 來設(shè)置可以使用的較大內(nèi)存空間。
 
連接線程緩存(Thread Cache):連接線程是 MySQL 為了提高創(chuàng)建連接線程的效率,將部分空閑的連接線程保持在一個(gè)緩存區(qū)以備新進(jìn)連接請求的時(shí)候使用,這尤其對那些使用短連接的應(yīng)用程序來說可以極大的提高創(chuàng)建連接的效率。當(dāng)我們通過 thread_cache_size 設(shè)置了連接線程緩存池可以緩存的連接線程的大小之后,可以通過(Connections - Threads_created) / Connections * 100% 計(jì)算出連接線程緩存的命中率。注意,這里設(shè)置的是可以緩存的連接線程的數(shù)目,而不是內(nèi)存空間的大小。thread_cache_size,默認(rèn)20  www.2cto.com  
 
表緩存(Table Cache):表緩存區(qū)主要用來緩存表文件的文件句柄信息,在 MySQL5.1.3之前的版本通過table_cache 參數(shù)設(shè)置,但從MySQL5.1.3開始改為 table_open_cache 來設(shè)置其大小。當(dāng)我們的客戶端程序提交Query 給 MySQL 的時(shí)候,MySQL 需要對 Query 所涉及到的每一個(gè)表都取得一個(gè)表文件句柄信息,如果沒有Table Cache,那么 MySQL 就不得不頻繁的進(jìn)行打開關(guān)閉文件操作,無疑會(huì)對系統(tǒng)性能產(chǎn)生一定的影響,Table Cache 正是為了解決這一問題而產(chǎn)生的。在有了 Table Cache 之后,MySQL 每次需要獲取某個(gè)表文件的句柄信息的時(shí)候,首先會(huì)到 Table Cache 中查找是否存在空閑狀態(tài)的表文件句柄。如果有,則取出直接使用,沒有的話就只能進(jìn)行打開文件操作獲得文件句柄信息。在使用完之后,MySQL 會(huì)將該文件句柄信息再放回 Table Cache 池中,以供其他線程使用。注意,這里設(shè)置的是可以緩存的表文件句柄信息的數(shù)目,而不是內(nèi)存空間的大小。
 
表定義信息緩存(Table definition Cache):表定義信息緩存是從 MySQL5.1.3 版本才開始引入的一個(gè)新的緩存區(qū),用來存放表定義信息。當(dāng)我們的 MySQL 中使用了較多的表的時(shí)候,此緩存無疑會(huì)提高對表定義信息的訪問效率。MySQL 提供了 table_definition_cache 參數(shù)給我們設(shè)置可以緩存的表的數(shù)量。在MySQL5.1.25 之前的版本中,默認(rèn)值為128,從 MySQL5.1.25 版本開始,則將默認(rèn)值調(diào)整為 256 了,較大設(shè)置值為524288。注意,這里設(shè)置的是可以緩存的表定義信息的數(shù)目,而不是內(nèi)存空間的大小。
 
二進(jìn)制日志緩沖區(qū)(Binlog Buffer):二進(jìn)制日志緩沖區(qū)主要用來緩存由于各種數(shù)據(jù)變更操做所產(chǎn)生的Binary Log 信息。為了提高系統(tǒng)的性能,MySQL 并不是每次都是將二進(jìn)制日志直接寫入 Log File,而是先將信息寫入 Binlog Buffer 中,當(dāng)滿足某些特定的條件(如 sync_binlog參數(shù)設(shè)置)之后再一次寫入 Log File 中。我們可以通過 binlog_cache_size 來設(shè)置其可以使用的內(nèi)存大小,同時(shí)通過 max_binlog_cache_size 限制其較大大?。ó?dāng)單個(gè)事務(wù)過大的時(shí)候 MySQL 會(huì)申請更多的內(nèi)存)。當(dāng)所需內(nèi)存大于 max_binlog_cache_size 參數(shù)設(shè)置的時(shí)候,MySQL 會(huì)報(bào)錯(cuò):“Multi-statement transaction required more than ‘max_binlog_cache_size’ bytes of storage”。
 
MyISAM索引緩存(Key Buffer):MyISAM 索引緩存將 MyISAM 表的索引信息緩存在內(nèi)存中,以提高其訪問性能。這個(gè)緩存可以說是影響 MyISAM 存儲(chǔ)引擎性能的最重要因素之一了,通過 key_buffere_size 設(shè)置可以使用的較大內(nèi)存空間。  www.2cto.com  
 
InnoDB 日志緩沖區(qū)(InnoDB Log Buffer):這是 InnoDB 存儲(chǔ)引擎的事務(wù)日志所使用的緩沖區(qū)。類似于Binlog Buffer,InnoDB 在寫事務(wù)日志的時(shí)候,為了提高性能,也是先將信息寫入 Innofb Log Buffer 中,當(dāng)滿足innodb_flush_log_trx_commit 參數(shù)所設(shè)置的相應(yīng)條件(或者日志緩沖區(qū)寫滿)之后,才會(huì)將日志寫到文件(或者同步到磁盤)中。可以通過 innodb_log_buffer_size 參數(shù)設(shè)置其可以使用的較大內(nèi)存空間。
注:innodb_flush_log_trx_commit 參數(shù)對 InnoDB Log 的寫入性能有非常關(guān)鍵的影響。該參數(shù)可以設(shè)置為0,1,2,解釋如下:
 
0:log buffer中的數(shù)據(jù)將以每秒一次的頻率寫入到log file中,且同時(shí)會(huì)進(jìn)行文件系統(tǒng)到磁盤的同步操作,但是每個(gè)事務(wù)的commit并不會(huì)觸發(fā)任何log buffer 到log file的刷新或者文件系統(tǒng)到磁盤的刷新操作。
 
1:在每次事務(wù)提交的時(shí)候?qū)og buffer 中的數(shù)據(jù)都會(huì)寫入到log file,同時(shí)也會(huì)觸發(fā)文件系統(tǒng)到磁盤的同步;
 
2:事務(wù)提交會(huì)觸發(fā)log buffer 到log file的刷新,但并不會(huì)觸發(fā)磁盤文件系統(tǒng)到磁盤的同步。此外,每秒會(huì)有一次文件系統(tǒng)到磁盤同步操作。
 
此外,MySQL文檔中還提到,這幾種設(shè)置中的每秒同步一次的機(jī)制,可能并不會(huì)完全確保非常準(zhǔn)確的每秒就一定會(huì)發(fā)生同步,還取決于進(jìn)程調(diào)度的問題。實(shí)際上,InnoDB 能否真正滿足此參數(shù)所設(shè)置值代表的意義正常Recovery 還是受到了不同 OS 下文件系統(tǒng)以及磁盤本身的限制,可能有些時(shí)候在并沒有真正完成磁盤同步的情況下也會(huì)告訴 mysqld 已經(jīng)完成了磁盤同步。
 
InnoDB 數(shù)據(jù)和索引緩存(InnoDB Buffer Pool):InnoDB Buffer Pool 對 InnoDB 存儲(chǔ)引擎的作用類似于 Key Buffer Cache 對 MyISAM 存儲(chǔ)引擎的影響,主要的不同在于 InnoDB Buffer Pool 不僅僅緩存索引數(shù)據(jù),還會(huì)緩存表的數(shù)據(jù),而且完全按照數(shù)據(jù)文件中的數(shù)據(jù)快結(jié)構(gòu)信息來緩存,這一點(diǎn)和  SGA 中的 database buffer cache 非常類似。所以,InnoDB Buffer Pool 對 InnoDB 存儲(chǔ)引擎的性能影響之大就可想而知了??梢酝ㄟ^(Innodb_buffer_pool_read_requests - Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests * 100% 計(jì)算得到 InnoDB Buffer Pool 的命中率。  www.2cto.com  
 
InnoDB 字典信息緩存(InnoDB Additional Memory Pool):InnoDB 字典信息緩存主要用來存放 InnoDB 存儲(chǔ)引擎的字典信息以及一些 internal 的共享數(shù)據(jù)結(jié)構(gòu)信息。所以其大小也與系統(tǒng)中所使用的 InnoDB 存儲(chǔ)引擎表的數(shù)量有較大關(guān)系。不過,如果我們通過 innodb_additional_mem_pool_size 參數(shù)所設(shè)置的內(nèi)存大小不夠,InnoDB 會(huì)自動(dòng)申請更多的內(nèi)存,并在 MySQL 的 Error Log 中記錄警告信息。



上述內(nèi)容就是MySQL中怎么實(shí)現(xiàn)線程共享內(nèi)存參數(shù),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

名稱欄目:MySQL中怎么實(shí)現(xiàn)線程共享內(nèi)存參數(shù)-創(chuàng)新互聯(lián)
瀏覽路徑:http://jinyejixie.com/article0/dphoio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)定制網(wǎng)站、網(wǎng)站制作網(wǎng)站收錄、外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
临夏市| 聊城市| 沅江市| 安顺市| 包头市| 东乡县| 新昌县| 新宾| 合水县| 大化| 尖扎县| 成都市| 蒙阴县| 顺昌县| 邯郸市| 双桥区| 嘉义市| 微山县| 姚安县| 肥西县| 泾源县| 鄂尔多斯市| 孟州市| 林芝县| 黑河市| 会同县| 绥江县| 吴忠市| 新闻| 灌云县| 乌鲁木齐市| 永安市| 西林县| 新津县| 绥阳县| 定结县| 尉犁县| 西贡区| 全州县| 钟祥市| 台安县|