MySQL 常见的开放性问题
生活随笔
收集整理的這篇文章主要介紹了
MySQL 常见的开放性问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有一個超級大表,如何優化分頁查詢?
超級大表的分頁優化分有以下兩種方式:
- 數據庫層面優化:利用子查詢優化超多分頁場景,比如:SELECT a.* FROM 表 1 a, (select id from 表 1 where 條件 LIMIT 100000,20 ) b where a.id=b.id ,先快速定位需要獲取的 id 段,然后再關聯查詢。MySQL 并不是跳過 offset 行,而是取 offset+N 行,然后返回放棄前 offset 行,返回 N 行,那當 offset 特別大的時候,效率就非常的低下,要么控制返回的總頁數,要么對超過特定閾值的頁數進行 SQL 改寫,利用子查詢先快速定位需要獲取的 id 段,然后再關聯查詢,就是對分頁進行 SQL 改寫的具體實現;
- 程序層面優化:可以利用緩存把查詢的結果緩存起來,這樣再下一次查詢的時候性能就非常高了。
線上修改表結構有哪些風險?
線上修改表結構有可能 MySQL 服務器阻塞,因為在執行 DML(select、update、delete、insert)操作時,會給表增加一個元數據鎖,這個元數據鎖是為了保證在查詢期間表結構不會被修改,而執行修改表結構時,必須要等待元數據鎖完成之后才能執行,這就可能造成數據庫服務器的阻塞。
在 MySQL 5.6 開始提供了 online ddl 功能,允許一些 DDL(create table/view/index/syn/cluster)語句和 DML 語句并發,在 5.7 版本對 online ddl 又有了增強,這使得
總結
以上是生活随笔為你收集整理的MySQL 常见的开放性问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几位阿里朋友重写的Java并发编程,牛逼
- 下一篇: Java调优:Mybaitis的缓存优化