SegmentFault 思否技術週刊 Vol.70 — 深入 MySQL 實戰

Beverly發表於2022-11-22

MySQL 是一種關聯資料庫管理系統,關聯資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內。這樣就增加了速度並提高了靈活性。

MySQL 的 SQL “結構化查詢語言”,SQL 是用於訪問資料庫的最常用標準化語言。

MySQL 軟體採用了 GPL( GNU 通用公共許可證),由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了 MySQL 作為網站資料庫。

本期技術週刊一起了解下 MySQL ,歡迎大家閱讀 ~

文章推薦

《10 分鐘教你寫一個資料庫》作者:艾小仙

今天教大家藉助一款框架快速實現一個資料庫,這個框架就是 Calcite,下面會帶大家透過兩個例子快速教會大家怎麼實現,一個是可以透過 SQL 語句的方式可以直接查詢檔案內容,第二個是模擬 Mysql 查詢功能,以及最後告訴大家怎麼實現 SQL 查詢 Kafka 資料。

《學習 MySQL 必須掌握的 13 個關鍵字,你 get 了嗎?》作者:Java 架構師

三正規化:

  • 第一正規化:每個表的每一列都要保持它的原子性,也就是表的每一列是不可分割的;
  • 第二正規化:在滿足第一正規化的基礎上,每個表都要保持唯一性,也就是表的非主鍵欄位完全依賴於主鍵欄位;
  • 第三正規化:在滿足第一正規化和第二正規化的基礎上,表中不能產生傳遞關係,要消除表中的冗餘性;

《Mysql 資料庫的批次插入或更新(Upsert)》作者:songofhawk

這個問題已經困擾我一段時間了,對於大量資料的插入或更新,批次操作肯定比每條記錄呼叫一次快得多,新資料可以用 insert 批次插入,老資料可以用 replace into 批次更新。但如果不知道資料是否存在(是否有唯一 key 和資料庫中已有記錄重複)想在一批資料庫中,插入新記錄,更新老記錄怎麼辦?

之前甚至想過封裝一個函式,先用 select ... in 批次查詢,然後分兩組插入和更新,但一方面通用性不佳,另一方面這不是一個原子操作,對於併發的情況,有可能查詢的時候記錄不存在,插入的時候就已經存在了。

仔細 google 了一下,才發現這種“存在 update,不存在 insert ”的動作,有個專有名詞,叫做“upsert”,相當形象。解決方案呢,不同資料庫各有自己的解決方案和方言,Mysql 叫做 on duplicate key update,PostgreSql 中叫做 on confict do update。

《Mysql 45 講關鍵知識》 作者:瘋狂小兵

是因為 Mysql 更新資料只寫到 redo 的 log 裡,達到閾值後會刷髒頁,佔用 CPU 資源。髒頁是指記憶體頁資料和磁碟頁資料不一致的情況。

發生場景

  • redolog 寫滿到閾值後,需將對應的記憶體頁資料刷到磁碟上。 需要儘量避免,否則所有更新操作都會被 hang 主
  • 記憶體不足,刷髒頁到磁碟上。常態,最需要關心的。
  • 資源空閒時,刷頁。也會時不時的刷下髒頁。資源空閒期刷髒頁,系統不會有壓力。
  • Mysql 正常關閉的時候,刷髒頁到磁碟。關閉時刷髒頁,正常操作,也不會關心效能。

影響效能的幾種情況

  • 一次刷髒頁太多。
  • 日誌寫滿了,更新全部堵塞住。

《為什麼說 MySQL 單錶行數不要超過 2000w ?》作者:碼猿技術專欄

作為在後端圈開車的多年老司機,是不是經常聽到過,“mysql 單表最好不要超過 2000w”,“單表超過 2000w 就要考慮資料遷移了”,“你這個表資料都馬上要到 2000w 了,難怪查詢速度慢”

這些名言民語就和 “群裡只討論技術,不開車,開車速度不要超過 120 碼,否則自動踢群”,只聽過,沒試過,哈哈。

下面我們就把車速踩到底,幹到 180 碼試試…….

《我操作 MySQL 的驚險一幕》作者:god23bin

情況:漏了某一個欄位 X,需要將 A 表的這個欄位列值更新到 B 表

條件:A 中的 id 欄位的值等於 B表中的 id 欄位的值 且 A 中的 name 欄位的值等於 B 中 name 欄位的值(條件為什麼這樣寫?)。

條件這樣寫主要是因為 表和表之間的關聯關係 可能有多個欄位,此處只選二個欄位,多個依此類推。

操作:

  • 一張表的資料插入到另一張表,可以這樣寫:
INSERT INTO 目標表(欄位1, 欄位2, ...) SELECT 欄位1, 欄位2, ... FROM 來源表 WHERE 條件;

問答推薦


# SegmentFault 技術週刊 #

「技術週刊」是社群特別推出的技術內容系列,一週一主題。

每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

如有問題可以新增小姐姐微信~

image.png

相關文章