<table id="qs2qo"></table>
  • <bdo id="qs2qo"><center id="qs2qo"></center></bdo>
    • 自動秒收錄
    • 軟件:1973
    • 資訊:56215|
    • 收錄網站:181187|

    IT精英團

    MYSQL如果索引優化僅僅是添加索引 太年輕而不簡單

    MYSQL如果索引優化僅僅是添加索引 太年輕而不簡單

    瀏覽次數:
    評論次數:
    編輯: 樂詠
    信息來源: ITPUB
    更新日期: 2022-05-16 21:04:34
    摘要

    MYSQL的索引優化,如果此時此刻看到索引的優化,僅僅想到添加適合的索引,是不完全的,索引的優化本身就具有很多的不確定性。1索引會隨著時間的推移,有性能的衰減2索引會隨著數據量的增加,有性能的衰

    • 正文開始
    • 相關閱讀
    • 推薦作品

    MYSQL的索引優化,如果你看到此刻的索引優化,只是想到添加一個合適的索引,那是不完整的,索引優化本身就有很多不確定性。

    1索引的性能會隨著時間而下降。

    2索引會隨著數據量的增加而出現性能下降。

    隨著業務的擴展,增加字段,改變條件,數據表的索引變得無效或者成為性能的障礙。

    4表本身的索引數量增加,導致數據插入和DML操作的性能問題。

    所以指數性能優化,無序操作可能造成指數=性能需要優化。

    我們來看看以上問題是怎么產生的。

    1每個表都會進行DML操作,其中基于BTREE原理,索引本身是有序的,索引中插入隨機數據反映出索引頁的物理順序并不接近邏輯順序,白話就是索引本身占用的空間,比實際占用的空間要小。

    select ENGINE,TABLE_NAME,Round(DATA_LENGTH/1024/1024)作為DATA_LENGTH,round(INDEX_LENGTH/1024/1024)作為INDEX_LENGTH,round(DATA_FREE/1024/1024)作為DATA_FREE,TABLE _ schema from information _ schema . tables其中DATA _ FREE 0;

    上面的語句可以讓您清楚地看到表中數據和索引的大小以及表中碎片的大小。通過上面的語句,還可以演化出一個語句來計算表的碎片率。

    通過分析,我們可以知道這些表的碎片化程度。碎片率高的表本身就是對索引的消耗。(如果碎片率很高,則需要進行碎片整理以提高性能)

    以上是指數隨時間的下降情況。

    2.數據量的增加和索引的下降類似于MYSQL表中BTREE的數據存儲?;谒饕旧?,隨著數據流量的增加,根葉節點可能會發展到三層以上,因此查詢數據必然會搜索更深的葉節點,這也是數據索引下降的因素之一。

    數據表隨著業務的變化而變化,相關查詢的條件也隨之變化。添加了新字段后,以前的查詢條件可能不如最初設計索引時有效,因此跟蹤數據庫中索引的狀態也很重要。

    在這里,通過各種語句,我們可以獲得索引的狀態,動態調整索引,及時添加或清理無效索引。

    1查看全表掃描的信息。

    select db,query,total _ latency/exec _ count as avg _ latency _ us,no _ index _ used _ count from sys . statements _ with _ full _ table _ scans;

    data-galleryid="" data-s="300,640" src="https://image.z.itpub.net/zitpub.net/JPG/2022-05-16/BE88216326F5713A4351EB15423C7FF5.jpg" width="948" src="https://image.z.itpub.net/zitpub.net/JPG/2022-05-16/BE88216326F5713A4351EB15423C7FF5.jpg">

      通過這個信息查看通過全表掃描的語句以及這些語句消耗的時間,通過執行的次數以及執行時間的信息,來判斷這個語句是否需要進行優化,或是因為索引缺失引起性能的問題。

    2  通過下面的語句來對索引和表使用時的I/O等待時間進行統計和計算,這里統計的是每次調用的延遲時間,通過歷史數據比較可以發現某些索引或表在I/O上面的延遲變化,發現相關的索引使用中的衰減的現象。

    select object_schema as database_name, object_name as table_name,index_name, sum_timer_wait/count_star/1000000000000 as sec from table_io_waits_summary_by_index_usage  where SUM_TIMER_WAIT <> 0 ;


    3 查詢表的等待時間,通過查詢數據獲得平均每次訪問表I/O的等待時間。

    select object_schema as database_name,object_name as table_name,sum_timer_wait/count_star/1000000000000 as sec from table_io_waits_summary_by_table where count_star <> 0 ;



    4  查看表中索引的個數(僅僅在MYSQL8 中作用,information_schema)

    select it.name,ii.index_count from innodb_tables as it  inner join (select table_id,count(*) as index_count from INNODB_INDEXES group by TABLE_ID) as ii on it.table_id = ii.table_id where it.name not like 'sy%' and it.name not like 'mysq%';


    5 查詢當前表訪問過程中的鎖的等待時間,這里通過查看平均每次的訪問表的等待時間,發現某些時間較長的表,說明有缺少索引或索引有問題的可能性。 

    select object_schema as database_name,object_name as table_name,sum_timer_wait/count_star/1000000000000 as sec from table_lock_waits_summary_by_table where count_star <> 0 ;


    6  查詢95%中位數查詢語句的耗時延遲,全表掃描等信息

    select query,db,full_scan,exec_count,avg_latency,rows_sent,first_seen,last_seen from sys.statements_with_runtimes_in_95th_percentile where query like 'select%';


    以上的信息都可以幫助DB 人員快速了解當前的MYSQL 數據庫的索引的使用情況,并根據信息,進行更深入的分析和調整。



    原文

    標簽:索引 語句 時間
    甲骨文(第11代)單實例-室內空調(第11代)遷移模擬測試
    ? 上一篇 2022-05-16
    記得網上一個K8s Ingress訪問故障排除 最后卻不是帖子的鍋
    下一篇 ? 2022-05-16
    • 胡迪核心知識點詳解(好文章合集)
      1閱讀 0條評論 個贊
      以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
    • 前端面試必須解決網絡中的跨域問題
      0閱讀 0條評論 個贊
      什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
    • 如何在Bash腳本中使用強大的Linux測試命令
      0閱讀 0條評論 個贊
      Linuxtest命令是Shell內置命令,用來檢測某個條件是否成立。test通常和if語句一起使用,并且大部分if語句都依賴test??梢詫⒁粋€元素與另一個元素進行比較,但它更?!?/div>
    • 真正的建筑設計是什么樣子的?
      1閱讀 0條評論 個贊
      什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的……
    • 10分鐘了解云原生 值得收藏~
      0閱讀 0條評論 個贊
      文章轉載:奇妙的Linux世界我們已經進入云計算下半場,不再像上半場在糾結要不要上云,而是討論怎么上云?才能把云計算的價值發揮到淋漓盡致。如何把云計算與不同的業務場景深度結合?如何讓技術真正作用于企業……
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    • 如何讓Kubernetes集群優雅地使用GPU節點
      2閱讀 0條評論 個贊
      如何讓你的Kubernetes集群使用GPU節點CUDA驅動程序如果您還沒有這樣做,請確保您已在GPU節點上安裝了NVIDIACUDA驅動程序。CUDA是來自nvidia的并行計算平臺。ht……
    • 高并發服務的幾點優化經驗
      1閱讀 0條評論 個贊
      前言:如何優化高并發服務,這里指的是qps在20萬以上的在線服務,注意不是離線服務,在線服務會存在哪些挑戰呢?①無法做離線緩存,所有的數據都是實時讀的②大量的請求會打到線上服務,對于服務的響應時間要……
    • MYSQL如果索引優化僅僅是添加索引 太年輕而不簡單
      1閱讀 0條評論 個贊
      MYSQL的索引優化,如果此時此刻看到索引的優化,僅僅想到添加適合的索引,是不完全的,索引的優化本身就具有很多的不確定性。1索引會隨著時間的推移,有性能的衰減2索引會隨著數據量的增加,有性能的衰……
    • Java原子變量中set()和lazySet()的區別
      1閱讀 0條評論 個贊
      來源|Java技術指北(ID:javanorth)在本教程中,我們將講講Javaatomic類(如AtomicInteger和AtomicReference)的方法set()和l……
    • Spring云應用的優雅下線和灰度發布
      2閱讀 0條評論 個贊
      前言在生產環境中,如何保證在服務升級的時候,不影響用戶的體驗,這個是一個非常重要的問題。如果在我們升級服務的時候,會造成一段時間內的服務不可用,這就是不夠優雅的。那什么是優雅的呢?主要就是指在服務升級……
    • 基礎鞏固——至少需要多少行代碼才能實現深度復制?
      1閱讀 0條評論 個贊
      前言深度克?。ㄉ羁截悾┮恢倍际浅?、中級前端面試中經常被問到的題目,網上介紹的實現方式也都各有千秋,大體可以概括為三種方式:JSON.stringify+JSON.parse,這個很好理解;全量判斷類……
    • 運維數字化轉型的幾點思考
      1閱讀 0條評論 個贊
      這個月底要召開一個企業運維數字化轉型的研討會,昨天一個合作伙伴和我討論一些研討會的話題問題。數字化轉型是近期十分熱門的話題,各大國企央企也把數字化轉型作為未來幾年的工作重點。不過針對于IT運維,數字化……
    • 高可用性架構設計的無狀態服務
      2閱讀 0條評論 個贊
      笑談架構設計事故的發生是量的積累的結果,任何事情都沒有表面看起來那么簡單,在軟件運行的過程中,隨著用戶量的增加,不考慮高可用,遲早有一天會發生故障,不得事先考慮高可用設計,而高可用是一門龐大的學問。在……
    • 胡迪核心知識點詳解(好文章合集)
      1閱讀 0條評論 個贊
      以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
    • 數據倉庫實踐:總線矩陣體系結構的設計
      1閱讀 0條評論 個贊
      以下文章來源于公眾號-云祁的數據江湖,作者云祁如何設計一套切實可行的數據倉庫呢?我們要明白,對于數據倉庫的設計是不能完全依賴于業務的需求,但往往又必須要服務于業務的價值。因此,在構建數據倉庫前,我們……
    • 真正的建筑設計是什么樣子的?
      1閱讀 0條評論 個贊
      什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的……
    • 甲骨文(第11代)單實例-室內空調(第11代)遷移模擬測試
      1閱讀 0條評論 個贊
      Oracle11.2.0.4單實例----Oracle19C-RAC遷移模擬測試總體思想:通過RMAN物理備份在備庫恢復主庫數據,后續通過在主庫停業務后,將從備份后的所有日志都同步到新庫應用,重新配置……
    • 前端面試必須解決網絡中的跨域問題
      0閱讀 0條評論 個贊
      什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
    • Python字符串深度摘要
      2閱讀 0條評論 個贊
      以下文章來源于公眾號-蘿卜大雜燴,作者周蘿卜今天我們來學習字符串數據類型相關知識,將討論如何聲明字符串數據類型,字符串數據類型與ASCII表的關系,字符串數據類型的屬性,以及一些重要的字符串方法和……
    • 教你如何在Linux中生成復雜的密碼 并檢查密碼強度
      0閱讀 0條評論 個贊
      在本教程中,我們將討論如何生成復雜密碼并且檢查密碼強度。生成復雜的密碼強密碼應由字母、數字和符號的混合組成。第二個要求是不要使用已知單詞、出生日期或姓名,因為很容易受到字典攻擊。密碼應該包含多少個字符……
    • 透徹理解數據資產、數據資源、數據管理、數據治理等概念的區別
      1閱讀 0條評論 個贊
      以下文章來源于公眾號-大魚的數據人生,作者討厭的大魚先生數據成為生產要素后,各種跟數據相關的概念就出來了,其實很多概念沒有權威定義,大家各有各的理解,這導致了理解上的歧義。數據管理、數據治理、數據資源……
    • 運維 放下監控——也放下自己
      0閱讀 0條評論 個贊
      來源公眾號:云原生技術應用(ID:sreguide)根據多年和運維打交道的經歷,我發現,運維常常讓監控變得無效。。。1.我的監控故事我做過兩年多的運維工作,后面就轉做運維平臺開發了,也一步步看著監控……
    • 運維常用的34個Linux Shell腳本 對你一定有幫助!
      1閱讀 0條評論 個贊
      作為一名Linux工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網上沖浪的時候,也注意收集一些大佬寫過的腳本,匯總整理一下,歡迎收藏,與君共勉?。?)用戶猜數字#!/b……
    • SQL中的三種重復數據刪除方法 還有誰不行?
      1閱讀 0條評論 個贊
      SQL去重是數據分析工作中比較常見的一個場景,今天給大家具體介紹3種去重的方法。在使用SQL提數的時候,常會遇到表內有重復值的時候,比如我們想得到uv(獨立訪客),就需要做去重。在MySQL中……
    • 你見過的最全面的Python關鍵知識總結
      1閱讀 0條評論 個贊
      這是一份來自于SegmentFault上的開發者@二十一總結的Python重點。由于總結了太多的東西,所以篇幅有點長,這也是作者"縫縫補補"總結了好久的東西,強烈建議收藏再慢慢看~Py2……
    最近發布資訊
    更多
    本地特级毛片,老师脱裙子让我看内裤,人妻av乱片aV出轨avApp
    <table id="qs2qo"></table>
  • <bdo id="qs2qo"><center id="qs2qo"></center></bdo>
  • <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>