切換語言為:簡體
使用SQL遞迴來遍歷和查詢樹狀結構資料

使用SQL遞迴來遍歷和查詢樹狀結構資料

前言在關係型資料庫中,資料通常儲存為二維表格(rows 和 columns)。然而,在實際業務中,很多場景下我們需要處理樹狀結構的資料,例如:公司組織架構:從某個部門開始,查詢其下屬部門或員工。商品分類:查詢某個大類下的所有子類。許可...

那些年背過的題:MySQL MVCC實現原理深入分析

MySQL 的多版本併發控制(MVCC)是一種用於處理併發事務的機制,主要用於提高資料庫的效能和一致性。InnoDB 是 MySQL 中最常用的儲存引擎之一,它實現了 MVCC。MVCC 的基本原理資料版本化:在 MVCC 中,每行記...

開發易忽視的問題:InnoDB 行鎖設計與實現

InnoDB 的行鎖是透過其儲存模型和鎖機制來實現的。下面是有關其具體實現和儲存結構的深入分析:儲存結構資料頁:InnoDB 將表的資料儲存在資料頁中,每個頁預設大小為 16KB。資料頁中儲存多個行記錄,行記錄按照主鍵順序存放。行格式...

MySQL 延遲從庫是什麼以及應用場景解析

前言:我們都知道,MySQL 主從延遲是一件很難避免的情況,從庫難免會偶爾追不上主庫,特別是主庫有大事務或者執行 DDL 的時候。MySQL 除了這種正常從庫外,還可以設定延遲從庫,顧名思義就是故意讓從庫落後於主庫多長時間,本篇文章我...

MySQL中的連表查詢,內連線和外連線的使用及區別

sql查詢是業務開發中的基礎技術,在日常的開發中,單表的簡單查詢往往無法實現常規的業務需求,將所有的資訊都放在一張表裏儲存也是不現實的,也不符合保證表中的每一列都和主鍵列直接相關,而不是間接相關的要求。假設現在有一個使用者表和一個訂單...

如何處理 MySQL 主從延遲?

既然是主從,是讀寫分離,那就不可避免會產生延遲,因為資料從主機同步到從機,總是需要時間的。一般來說這個時間不會太久,可能就是 1ms 左右。不過,如果你的系統資料量比較大,亦或者業務對資料實時性要求比較高,那麼我們還是需要想辦法去處理...

MySQL安裝密碼校驗外掛及說明

一:什麼是密碼校驗外掛  validate_password是 MySQL 提供的一個外掛(外掛名稱為 validate_password),用於加強密碼的安全性。它透過設定密碼複雜度要求,強制使用者在設定密碼時遵守一定的規則,從而提...

MySql中這五種情況不加GAP鎖,只加行鎖

MySql中這五種情況不加GAP鎖,只加行鎖

在原始碼中有這麼一段:goto no_gap_lock表示加的鎖型別為:LOCK_REC_NOT_GAP,也就是我們通常所理解的行鎖,只鎖記錄行本身,不說記錄前面的間隙。上面程式碼中,如果進入else分支,那麼鎖的型別是LOCK_OR...

如何實現 MySQL 億級資料順利遷移?

本文介紹了一次 MySQL 資料遷移的流程,透過方案選型、業務改造、雙寫遷移最終實現了億級資料的遷移。一、背景預約業務是遊戲中心的重要業務之一。由於歷史原因,預約業務資料表與其他業務資料表儲存在同一個資料庫中。當其他業務出現慢 SQL...

MySQL 讀寫分離的原理及市面上常用的工具

MySQL 讀寫分離的原理及市面上常用的工具

讀寫分離是爲了將對資料庫的讀、寫分散到不同的資料庫例項上。這樣的設計並不一定是完美的。讀寫分離主要針對的是讀多寫少的場景,對於寫多讀少的場景就不合適了。比如,持久化落庫就是一個寫多讀少的場景,多數情況是在不斷的將資料記錄到資料庫,偶爾...

記一次「從2秒提升到2毫秒」的慢查詢最佳化過程

前言在資料庫最佳化領域,慢查詢是一個常見的問題,它不僅影響系統的響應速度,還可能導致使用者體驗下降。在平時系統開發中,產品也會要求系統查詢必須在幾秒響應之內,作為後端開發人員具備系統最佳化能力是十分重要的, 本文將以個人工作實際專案分...