MySQL緩存分類和配置

来源:http://www.cnblogs.com/wy123/archive/2017/03/24/6610111.html
-Advertisement-
Play Games

讀書筆記,待補充完善 MySQL緩存分類 InnoDB緩衝池 InnoDB日誌文件和MyIsAM數據的操作系統緩存 MyIsAM鍵緩存 查詢緩存 無法手工配置的緩存,二進位日誌,表定義文件的操作系統緩存 其它緩存,通常不需要太多記憶體 InnoDB緩衝池 作用: 1.緩存的對象包括:數據行,索引,插入 ...


 

讀書筆記,待補充完善

 

MySQL緩存分類
  InnoDB緩衝池
  InnoDB日誌文件和MyIsAM數據的操作系統緩存
  MyIsAM鍵緩存
  查詢緩存
  無法手工配置的緩存,二進位日誌,表定義文件的操作系統緩存
  其它緩存,通常不需要太多記憶體

InnoDB緩衝池 
  作用:
    1.緩存的對象包括:數據行,索引,插入緩衝,鎖,以及內部數據結構。
    2.利用緩衝池來版主延遲寫入,可以合併多次寫入,順序寫會(存儲設備)
  相關參數:
    查詢InnoDB緩衝池的大小,單位是位元組
    show variables like 'innodb_buffer_pool_size';
    innodb_max_dirty_pages_pct變數影響臟頁的數量,
    查看innodb_max_dirty_pages_pct的設置
    show variables like 'innodb_max_dirty_pages_pct'
    當臟頁超過innodb_max_dirty_pages_pct指定的百分比之後,後臺線程啟動(快速刷寫模式)將臟頁刷寫入磁碟
    MySQL記憶體不足時,有一個類似於sqlserver的lazywrite的後臺線程定時將臟頁刷新入磁碟,
    並且清理臟頁占用的記憶體空間,給其他數據(需要載入記憶體的數據)使用。
    當事務日誌沒有空間的時候,InnoDB將進入激烈刷寫模式,大日誌可以提升性能的原因(?)
  預熱緩衝區:
    可以理解成資料庫啟動的時候將數據從磁碟載入到緩存區中,以提升數據的訪問性能
    兩種預熱緩衝區的方法
    1.Percina Server
    2.Init_file設置,也即啟動後指定Init_file裡面的sql,將sql語句中指定的數據寫入緩衝區

 

MyisAM鍵緩存(key caches)
  作用:
    MyisAM鍵緩存又稱鍵緩衝,MyisAM表只緩存索引不緩存數據,MyisAM鍵緩存就是緩存的索引
  相關參數:
    預設只有一個MyisAM鍵緩存(池)
    配置選項key_buffer_size
    設置key_buffer_size時參考索引的大小,key_buffer_size的值沒必要設置的比索引更大
    或者不超過操作系統緩存保留總記憶體的25%-50%
    設置時參考索引欄位的大小:select sum(index_length) from information_schema.`TABLES`
    mysql預設回將所有索引都換粗在預設鍵緩存中,
    每個MyisAM鍵緩存(池)有指定的大小,可以建多個key_buffer_size來緩存索引
    配置方法,在配置文件中加入
    key_buffer_1.key_buffer_size = 1G
    key_buffer_2.key_buffer_size = 1G
    加上預設的一個,一共有三個key_buffer_size
  指定索引到鍵緩存:
    緩存表的索引到指定緩衝區:cache index t1,t2 in key_buffer_1
    或者在init_file中配置
    LODA INDEX INTO CACHE t1,t2(被分配在預設緩衝區)
  鍵緩存使用率計算:
    100-((key_buffer_unused*key_cache_block_size)*100/key_buffer_size)
  其它:
    1.MyisAM使用操作系統記憶體來緩存數據,數據往往比索引要大,因此要預留更多的記憶體給操作系統緩存,而不是鍵緩存
    2.即使沒有使用MyisAM表,依舊要設置key_buffer_size為一個較小的值(比如32M),mysql伺服器可能在內部使用MyisAM表

線程緩存
  作用:
    當連接關閉後,釋放的線程被緩存起來,處於備用狀態,
    當有新的連接創建時,可以直接使用緩存中緩存的線程,以提高連接請求的效率
    不用為每個連接創建新的線程
  消費方式:
    新進來的連接從緩存中占用一個處於緩存狀態的線程(被占用後從緩存中刪除),
    當連接關閉後,如果線程緩存還有空間的話,將當前線程歸還到緩存線程中,如果緩存線程沒有空間,則銷毀這個線程
  相關參數:
    thread_cache_size指定了緩存中可保存的線程的個數
    每個線程占用的記憶體空間為256kb左右,
    除非有非常高的併發訪問,否則不應該,一般不需要配置這個值
    單位是緩存的線程的個數
    show variables like 'thread_cache_size'
    每個線程占用的記憶體空間為256kb左右,

表緩存
  作用:
    主要是跟MyisAM表有關,緩存的是表的.frm解析結果和一些其他數據,
    緩存之後就提高訪問表的效率。對於MyIsAM表,表緩存之後可以避免修改MyisAM頭文件來標記表正在被使用
    show variables like '%table_open_cache%';

InnoDB 數據字典表
  作用:  
    緩存InnoDB的表定義信息,
    每當打開一張InnoDB表的時候,就會緩存這個表的定義到數據字典,但是表關閉後並不會從緩存中移除


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.MapReduce(一個分散式運算框架)將數據分為數據塊,發送到不同的節點,並行方式處理。 2.NodeManager和DataNode在一個節點上,程式與數據在一個節點。 3.內容分為兩個部分 1) Map 讀取文件,將數據分塊,輸入輸出都是<key,value> 2) Reduce 輸入輸出 ...
  • comment on column 表名.欄位名 is '註釋內容'; comment on table 表名 is '註釋內容'; ...
  • public class SqlHelper { public static string connstr= ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; /// <summary> /// 執行增刪改 /// ...
  • 二進位日誌簡單介紹 MySQL的二進位日誌(binary log)是一個二進位文件,主要用於記錄修改數據或有可能引起數據變更的MySQL語句。二進位日誌(binary log)中記錄了對MySQL資料庫執行更改的所有操作,並且記錄了語句發生時間、執行時長、操作數據等其它額外信息,但是它不記錄SELE... ...
  • 一.索引的作用 一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現性能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。 在數據量和訪問量不大的情況下,mysql訪問是非常快的,是否加索引對訪問影響不大。但是當數據量和訪問量劇增 ...
  • 本文來源於轉載:http://www.cnblogs.com/zhangq723/archive/2012/03/13/2394102.html 前提:在使用下麵的備份方式之前需要確保你的Sqlserver Agent服務啟動,切設置為自動啟動。否則當你伺服器重啟了但是Agent服務沒有啟動,那麼自 ...
  • 好久沒更新博客了,上周在x64位的操作系統中安裝好了32位或64位的oracle 11g客戶端,但用SSIS或Microsoft SQL Server 2012報表生成器3.0去連接oracle 11g死活都連接不上,報各類錯誤,百度了網上給出的解決方案也沒解決,這個問題困擾了兩天,但用同事的電腦去 ...
  • 本文介紹binlog的作用以及幾個重要參數的使用方法,同時通過實驗來描述binlog內部記錄內容:row 、statement跟mixed的設置下,記錄了哪些東西,最後會簡單介紹下binlog server的搭建以及一些關於binlog使用的小Tips。 理解跟熟悉binlog相關內容,對複製原理及 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...