一次分割槽查詢異常的分析
節前我處理了一個問題。先上圖,可以看出來查詢這個表,有兩個條件,一個是code一個是實際。最終執行查了5000萬行資料。歷時900秒。當然最後也是查了個寂寞,沒查到。
對於5000萬掃查了900秒,這個我既能理解,又不能理解。
能理解的是掃描5000萬用900多秒,說的過去。 不能理解是。從2022年1月開始到現在這個表一共才2億條。 我每月一個分割槽,查詢一個星期,怎麼也在月的分割槽中。那個code的一個星期資料在150萬左右。不應該會查到5000萬。
即使不帶code,一個星期也就700萬。
不過我依然相信這個5000萬是實際發生的。
我當時就想一個月大不了就700萬,要到5000萬,那要8個700萬差不多。
等等,說到這裡,我似乎發現了什麼。七八五十六啊,因為差不多現在這個表也就是八九個分割槽的樣子。
那麼我只查code發現大約4300萬左右。那麼說明在實際查詢過程中,那一個星期資料的code資料,被認為只有一個星期而沒有code。而在這種情況下,一個星期的和平時一個月資料量大致相等,又變成了跨所有分割槽執行。
是不是bug我不好說。因為不是每次都這樣。這情況倒是第一次遇到。在Oracle中只要時間落在一個月度中的,是不會產生跨月度分割槽的。
這可能是最佳化器不同,Oracle最佳化器目前還是最厲害的。
也許看到這裡有人說MySQL的分割槽不好,不過我用到現在也就是這個場景出了跨分割槽的問題。如果時間選擇不是一週,而是3天或者5天,是沒有問題的。或者說一週的資料量和一個月資料量相差很遠,不造成資料庫誤判也是沒有問題的。
MySQL分割槽還是利大於弊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2917296/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何查詢分割槽表的分割槽及子分割槽
- SCI分割槽查詢
- 分割槽表分割槽索引查詢效率探究索引
- Oracle查詢分割槽表的最後一個分割槽值Oracle
- oracle實用sql(14)--查詢分割槽表的分割槽列和子分割槽列OracleSQL
- 巧用分割槽查詢案例一則
- hibernate異常之--count查詢異常
- 處理動態分割槽時出現的異常
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- Oracle查詢Interval partition分割槽表內資料Oracle
- oracle 並行cpu查詢分割槽表測試Oracle並行
- mysql 5.7.11查詢分割槽表的一個問題MySql
- 一次VPN隧道建立異常分析
- 記一次詭異的Oracle查詢轉換Oracle
- MongoDB 查詢超時異常 SocketTimeoutExceptionMongoDBException
- Spark SQL解析查詢parquet格式Hive表獲取分割槽欄位和查詢條件SparkSQLHive
- PostgreSQL 原始碼解讀(98)- 分割槽表#4(資料查詢路由#1-“擴充套件”分割槽表)SQL原始碼路由套件
- 11.2.0.2.0 bug? 簡單查詢代價異常
- Java 列舉查詢並不拋異常的實現Java
- 分析asm對應的磁碟分割槽ASM
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- Oracle查詢資料庫中所有表和分割槽表的記錄數Oracle資料庫
- 詭異的”慢查詢“
- linux下查詢asm磁碟和linux的分割槽的對應關係LinuxASM
- 查詢凶手:一次logmin的紀錄和分析
- rebuild分割槽表分割槽索引的方法Rebuild索引
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- Windows伺服器如何磁碟分割槽,Windows伺服器磁碟分割槽常見的三種Windows伺服器
- Flutter 常見異常分析Flutter
- 二分查詢常見套路與分析
- Oracle索引或這類索引的分割槽處於不可用狀態 查詢Oracle索引
- Spark 3.0 新特性 之 自適應查詢與分割槽動態裁剪Spark
- 常見的查詢操作
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- 記一次伺服器遷移第二篇-----dblink方式匯入匯出導致Oracle分割槽表異常伺服器Oracle
- 一次ORACLE分散式事務鎖異常處理分析Oracle分散式
- 一次elasticsearch 查詢瞬間超時案例分析Elasticsearch
- solaris 分割槽常用命令(備查)