偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

面試官:MySQL 使用多表 JOIN 有哪些危害?

數(shù)據(jù)庫 MySQL
如果涉及信創(chuàng)改造,多表 JOIN 的 SQL 除了數(shù)據(jù)遷移外,還需要評估這個 SQL 在新庫上的執(zhí)行效率,給信創(chuàng)改造增加了很多額外的工作。

多表 JOIN 是好多公司嚴(yán)格禁止的  SQL 寫法,那它到底有哪些危害呢?今天來聊一下這個話題。

圖片圖片

1.資源壓力

多表 JOIN,尤其是 JOIN 涉及的表存在大表的情況下,數(shù)據(jù)庫會承受巨大的計算和內(nèi)存壓力。

在高并發(fā)場景下,多表 JOIN 可能占用大量的 join buffer,造成內(nèi)存壓力增加,SQL 執(zhí)行時間增大,進(jìn)一步造成大量連接不能釋放,連接被耗盡。最終結(jié)果就是整個數(shù)據(jù)庫實(shí)例響應(yīng)慢,客戶端因?yàn)楂@取不到連接而失敗。

2.性能風(fēng)險

JOIN 語句的性能依賴于正確的索引,如果 ON 或 WHERE 子句中的列沒有加索引,執(zhí)行 JOIN 語句需要進(jìn)行全表掃描。JOIN 的表越多,全表掃描的成本越高,最壞情況下可能達(dá)到呈笛卡爾積的數(shù)量級。尤其是 JOIN 語句中有大表(比如數(shù)據(jù)量百萬級別)時,一個復(fù)雜的多表 JOIN 語句響應(yīng)時間可能會達(dá)到分鐘級別,這會造成大量上游系統(tǒng)請求超時,業(yè)務(wù)不能正常進(jìn)行。

3.鎖等待

InnoDB 默認(rèn)隔離級別是可重復(fù)讀,在可重復(fù)讀隔離級別下,JOIN 查詢可能會對涉及的行加間隙鎖,如果 JOIN 的表比較多,可以會有多張表的多條記錄和間隙被鎖定,造成其他事務(wù)的鎖等待,甚至可能造成死鎖,這會嚴(yán)重降低系統(tǒng)吞吐量。

4.可維護(hù)性差

多表 JOIN 的 SQL 涉及多張表、多個 JOIN 條件,往往 where 子句也會有多個篩選條件,可讀性差。而復(fù)雜 JOIN 往往包含了復(fù)雜業(yè)務(wù)邏輯,面對需求修改,如果不是 SQL 原作者,很難理解和維護(hù)。對測試而言,測試用例也很難覆蓋所有場景,導(dǎo)致生成問題。

5.影響分庫分表

隨著業(yè)務(wù)量上升,數(shù)據(jù)量也會變大,單表存儲會影響到 SQL 性能,這個時候就需要考慮分庫分表。如果一個多張表 JOIN 的 SQL 語句中涉及多張表要分庫和分表,那就必須讓這些表的同一筆業(yè)務(wù)數(shù)據(jù)拆分到同一個數(shù)據(jù)庫節(jié)點(diǎn)上,同時 JOIN 的表名也需要修改,這涉及的改造和測試 工作難度非常大。

6.影響信創(chuàng)改造

如果涉及信創(chuàng)改造,多表 JOIN 的 SQL 除了數(shù)據(jù)遷移外,還需要評估這個 SQL 在新庫上的執(zhí)行效率,給信創(chuàng)改造增加了很多額外的工作。

責(zé)任編輯:武曉燕 來源: 君哥聊技術(shù)
相關(guān)推薦

2025-06-04 07:48:46

2025-03-26 01:25:00

MySQL優(yōu)化事務(wù)

2023-02-20 08:08:48

限流算法計數(shù)器算法令牌桶算法

2024-03-07 17:21:12

HotSpotJVMHot Code

2024-02-26 14:07:18

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2024-03-12 14:36:44

微服務(wù)HTTPRPC

2024-04-19 00:00:00

計數(shù)器算法限流算法

2024-02-01 08:08:53

Spring過濾器類型Gateway

2021-08-11 08:53:23

Git命令面試

2025-07-01 08:43:48

MySQL 8.0join查詢

2021-05-27 05:37:10

HTTP請求頭瀏覽器

2021-06-02 09:42:29

Node. js全局對象

2021-09-30 07:57:13

排序算法面試

2021-07-01 07:51:45

React事件綁定

2024-07-26 08:10:10

2024-05-29 14:34:07

2021-08-02 08:34:20

React性能優(yōu)化

2024-02-21 07:40:17

JVM內(nèi)存虛擬機(jī)

2021-07-05 11:06:11

組件React通信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號