使用SQL遞迴來遍歷和查詢樹狀結構資料
前言在關係型資料庫中,資料通常儲存為二維表格(rows 和 columns)。然而,在實際業務中,很多場景下我們需要處理樹狀結構的資料,例如:公司組織架構:從某個部門開始,查詢其下屬部門或員工。商品分類:查詢某個大類下的所有子類。許可...
前言在關係型資料庫中,資料通常儲存為二維表格(rows 和 columns)。然而,在實際業務中,很多場景下我們需要處理樹狀結構的資料,例如:公司組織架構:從某個部門開始,查詢其下屬部門或員工。商品分類:查詢某個大類下的所有子類。許可...
MySQL 的多版本併發控制(MVCC)是一種用於處理併發事務的機制,主要用於提高資料庫的效能和一致性。InnoDB 是 MySQL 中最常用的儲存引擎之一,它實現了 MVCC。MVCC 的基本原理資料版本化:在 MVCC 中,每行記...
InnoDB 的行鎖是透過其儲存模型和鎖機制來實現的。下面是有關其具體實現和儲存結構的深入分析:儲存結構資料頁:InnoDB 將表的資料儲存在資料頁中,每個頁預設大小為 16KB。資料頁中儲存多個行記錄,行記錄按照主鍵順序存放。行格式...
前言:我們都知道,MySQL 主從延遲是一件很難避免的情況,從庫難免會偶爾追不上主庫,特別是主庫有大事務或者執行 DDL 的時候。MySQL 除了這種正常從庫外,還可以設定延遲從庫,顧名思義就是故意讓從庫落後於主庫多長時間,本篇文章我...
最近一直在研究MySQL原始碼,有點走火入魔了,今天還是分享一篇跟MySQL有關的。大家先猜猜以下SQL會建立幾個索引?CREATE TABLE t1 ( id int, a varchar(10), b varchar(10)...
sql查詢是業務開發中的基礎技術,在日常的開發中,單表的簡單查詢往往無法實現常規的業務需求,將所有的資訊都放在一張表裏儲存也是不現實的,也不符合保證表中的每一列都和主鍵列直接相關,而不是間接相關的要求。假設現在有一個使用者表和一個訂單...
既然是主從,是讀寫分離,那就不可避免會產生延遲,因為資料從主機同步到從機,總是需要時間的。一般來說這個時間不會太久,可能就是 1ms 左右。不過,如果你的系統資料量比較大,亦或者業務對資料實時性要求比較高,那麼我們還是需要想辦法去處理...
一:什麼是密碼校驗外掛 validate_password是 MySQL 提供的一個外掛(外掛名稱為 validate_password),用於加強密碼的安全性。它透過設定密碼複雜度要求,強制使用者在設定密碼時遵守一定的規則,從而提...
在原始碼中有這麼一段:goto no_gap_lock表示加的鎖型別為:LOCK_REC_NOT_GAP,也就是我們通常所理解的行鎖,只鎖記錄行本身,不說記錄前面的間隙。上面程式碼中,如果進入else分支,那麼鎖的型別是LOCK_OR...
本文介紹了一次 MySQL 資料遷移的流程,透過方案選型、業務改造、雙寫遷移最終實現了億級資料的遷移。一、背景預約業務是遊戲中心的重要業務之一。由於歷史原因,預約業務資料表與其他業務資料表儲存在同一個資料庫中。當其他業務出現慢 SQL...
讀寫分離是爲了將對資料庫的讀、寫分散到不同的資料庫例項上。這樣的設計並不一定是完美的。讀寫分離主要針對的是讀多寫少的場景,對於寫多讀少的場景就不合適了。比如,持久化落庫就是一個寫多讀少的場景,多數情況是在不斷的將資料記錄到資料庫,偶爾...
前言在資料庫最佳化領域,慢查詢是一個常見的問題,它不僅影響系統的響應速度,還可能導致使用者體驗下降。在平時系統開發中,產品也會要求系統查詢必須在幾秒響應之內,作為後端開發人員具備系統最佳化能力是十分重要的, 本文將以個人工作實際專案分...