理解Mysql索引原理及特性 | 京東物流技術團隊
作為開發人員,碰到了執行時間較長的sql時,基本上大家都會説”加個索引吧”。但是索引是什麼東西,索引有哪些特性,下面和大家簡單討論一下。 1 索引如何工作,是如何加快查詢速度 索引就好比書本的目錄,提高數據庫表數據訪問速度的數據庫對象。當我們的請求打過來之後,如果有目錄,就會快速的定位到章節,再從章節裏找到數據。如果沒有目錄,如大海撈針一般,難度可見一斑。這就是我們經常碰到的罪魁禍首,全表掃描。
昵称 京東雲開發者
SQL
贡献者107
粉丝0
作為開發人員,碰到了執行時間較長的sql時,基本上大家都會説”加個索引吧”。但是索引是什麼東西,索引有哪些特性,下面和大家簡單討論一下。 1 索引如何工作,是如何加快查詢速度 索引就好比書本的目錄,提高數據庫表數據訪問速度的數據庫對象。當我們的請求打過來之後,如果有目錄,就會快速的定位到章節,再從章節裏找到數據。如果沒有目錄,如大海撈針一般,難度可見一斑。這就是我們經常碰到的罪魁禍首,全表掃描。
昵称 京東雲開發者
同事諮詢了一個問題,TDSQL(for MySQL)中的某張表主鍵需要改為聯合主鍵,是否必須先刪除現有的主鍵?因為刪除主鍵時,提示這個錯誤。 作者:劉晨,網名 bisal ,具有十年以上的應用運維工作經驗,目前主要從事數據庫應用研發能力提升和技術管理相關的工作,Oracle ACE(Alumni),騰訊雲TVP,擁有 Oracle OCM OCP 、EXIN DevOps Master 、S
昵称 愛可生開源社區
本文首發於公眾號:Hunter後端 原文鏈接:MySQL面試必備一之索引 在面試過程中,會有一些關於 MySQL 索引相關的問題,以下總結了一些: MySQL 的數據存儲使用的是什麼索引結構 B+ 樹的結構是什麼樣子 什麼是複合索引、聚簇索引、覆蓋索引 什麼是最左匹配原則 數據 B+ 樹中是如何查詢的 回表是什麼操作 B+ 樹的查詢有什麼優勢 索引下推是什麼意思 對於上
昵称 Hunter
在 MySQL 中,索引 是通過特定的數據結構來加速查詢操作。MySQL 支持多種類型的索引,其中 B+ 樹索引 是最常見的一種。 1. B+ 樹索引(B+ Tree Index) B+ 樹的特點: 所有數據存儲在葉子節點: 所有的數據都存儲在 B+ 樹的葉子節點中,非葉子節點僅存儲索引。 葉子節點鏈表: B+ 樹的葉子節點通過鏈表連接,使得在進
昵称 今夜有點兒涼
當遇到 MySQL 查詢性能較慢 的問題時,優化的思路通常包括以下幾個步驟。具體的優化方法會依賴於查詢的複雜性、表的結構以及數據量等因素。以下是我通常會遵循的優化思路和具體步驟: 1. 分析查詢執行計劃(EXPLAIN) 在開始優化之前,我會首先使用 EXPLAIN 或 EXPLAIN ANALYZE 來查看查詢的執行計劃。這樣可以清楚地瞭解 MySQL 在執行查詢時使用的索引、連接方式以及是否進
昵称 今夜有點兒涼
MySQL 的 回表(Back to Table) 是指在使用 二級索引(非主鍵索引) 查詢數據時,需要通過索引找到主鍵值,再根據主鍵值回到主鍵索引(聚集索引)中查找完整行數據的過程。回表會增加額外的 I/O 操作,可能影響查詢性能。 1. 回表發生的原因 MySQL 的索引結構決定了回表的必要性: 主鍵索引(聚集索引):葉子節點存儲完整的行數據。 二級索引(非主鍵索引):葉子節點存儲主鍵
昵称 今夜有點兒涼
大家好!今天我們來聊一個 MySQL 核心知識點:B+樹索引的查詢過程。可能你每天都在用SELECT語句查詢數據,但你想過這背後到底發生了什麼嗎?MySQL 是怎麼從成千上萬的數據中快速找到你要的那一條記錄的?帶着這個問題,我們一起揭開 MySQL B+樹索引的神秘面紗! 先説説為什麼 MySQL 選擇 B+樹? 在聊查詢過程前,我們得先明白 MySQL 為啥選 B+樹做索引結構。想象一下,如果數
昵称 異常君
你是否曾經為 MySQL 查詢性能苦惱?或者聽説過"索引下推",但不太明白它是如何工作的?今天我就和大家聊聊 MySQL 中一個強大卻常被忽視的特性 - 索引下推(Index Condition Pushdown,簡稱 ICP)。這個特性從 MySQL 5.6 版本引入,能有效提升查詢性能,減少 IO 操作,但很多開發者對它的理解還不夠深入。 索引下推是什麼? 索引下推是由 MySQL 優化器決定
昵称 異常君
MySQL 索引會失效的情況很多,尤其是在查詢條件、數據類型、排序方式或優化器選擇策略上不合適時。下面我按常見原因分組給你梳理一下,並標明是肯定失效還是可能失效(取決於優化器判斷)。 一、查詢條件寫法導致失效 這些是最常見的坑: 在索引列上使用函數或表達式(肯定失效) SELECT * FROM user WHERE YEAR(create_time) = 2024; -- cr
昵称 Leojx
MySQL日誌概述 MySQL的日誌包含服務日誌(Server Log)和默認存儲引擎InnoDB日誌(InnoDB Log)兩個模塊,細分下去有錯誤日誌(Error Log)、通用查詢日誌(General Query Log)、二進制日誌(Binary Log)、慢查詢日誌(Slow Query Log)、數據定義語句日誌(DDL Log)、重做日誌(Redo Log)、回滾日誌(Undo L
昵称 林木
mysql日誌中最重要的3種為redo log(重做日誌), binlog(歸檔日誌) 和 undo log(回滾日誌) 下面來詳細介紹一下這3種日誌 redo log redo log是Innodb引擎特有的,記錄了數據頁上的改動,使數據庫在宕機後有數據恢復的能力,保證數據的持久性 為什麼需要redo log 使數據庫在宕機或異常重啓後有恢復數據的能力,保證數據持久性 配合mysql
昵称 CLoud11y
Binlog(二進制日誌) 數據庫管理中不可或缺的重要工具,記錄了數據庫中的所有變更操作,為數據恢復、主從複製和審計等關鍵功能提供了基礎 是MySQL 服務器層維護的一種二進制格式的日誌文件,記錄了所有DDL(數據定義語句)和DML(數據操作語句),但不包括 select 和 show 等 作用: 數據恢復:某些場景下的數據恢復工作需要藉助 Bin log 完成 主從複製:在
昵称 晚上不吃飯
GC 的前置工作:快速而準確的根枚舉是怎麼做到的? ⚡ 在開始標記前,主流運行時都會做一輪“整頓秩序”的前置工作,目標是:以極低停頓時間把 span style="color:red;"GC 根(Roots)/span 找全、找準。根通常來自:線程span style="color:red;"寄存器/span、各線程span style="color:red;"棧幀/span、全局/靜態區、線程本
昵称 藍易雲
在數據價值堪比石油的數字時代,對每個組織而言,保護這一核心資產顯得尤為重要。無論是來自外部的黑客攻擊和惡意軟件,還是源於內部的人為失誤和內鬼行為,威脅無處不在。本文將介紹幾款先進的數據庫安全工具,從不同維度確保數據安全。 網絡安全:Tailscale 數據庫密鑰管理:Infisical 按需數據庫訪問:Indent 全方位人到數據庫操作管理:Bytebase Tailscale Tai
昵称 Bytebase
前言 一般來説,解決sqlalchemy 連接多個庫的最簡單的方式是新建兩個或多個db.session 相互沒有關聯,然後modle配置不同的db.session來連接,這樣的話,relationship正常配置就行,不用特殊配置. 如果這樣解決的話,也就不用看下面的配置了,下面是使用SQLALCHEMY_BINDS配置多個多個數據庫並使用relationship.(個人建議最好不用relatio
昵称 不悟
趁着優惠活動,買了個阿里雲乞丐版雲服務器,主要用來折騰學習,併為個人小程序公眾號提供少量接口需求,配置如下: 系統記得選: CentOS 7.9 64 位 UEFI 版 省流:Nginx+NodeJS+Python+Mysql 安裝 Nginx 運行以下命令安裝 Nginx yum -y install nginx 運行以下命令查看 Nginx 版本 nginx -v 返
昵称 周振超
概述 平時開發的時候,如果需要使用到 mysql 數據庫的時候,通常都是開放數據庫的 3306 端口,配置遠程訪問的權限,然後通過 Navicat 或者其他可視化工具進行操作,但是如何服務器不允許開放 3306 遠程端口,就無法使用Navicat,或者數據庫 sql 是文件比較大是,通過 Navicat 導入數據是會提示文件太大,導入失敗。 處理流程 接下來介紹如果在centos7上導入大文件數據
昵称 劉運傳
一、卸載舊版本 查詢是否存在舊版本 rpm -qa | grep mysql rpm -qa | grep mariadb 如果存在,挨個刪除已有版本: yum -y remove 版本 查看etc/目錄下是否存在my.cnf文件 ls etc/my.cnf # 刪除 rm my.cnf 卸載MySQL後殘留數據保存路徑 find / -name mysql # 刪除 rm -rf 查找的路徑名
昵称 wasdquiop
安裝nginx和PHP環境 root@cby:~# apt install nginx php7.4 php7.4-mysql php7.4-fpm 修改nginx配置文件 root@cby:~# vim /etc/nginx/sites-available/default root@cby:~#cat/etc/nginx/sites-available/default server {
昵称 小陳運維
要將Docker命令轉換為Docker Compose文件,關鍵在於理解Docker命令的各個參數,然後將其映射到Docker Compose的YAML配置文件中。以下是對這一過程的詳細分析和具體步驟。 一、Docker Compose簡介 Docker Compose是一個用於定義和管理多容器Docker應用程序的工具。通過Compose,開發者可以使用YAML文件來配置應用程序的各個服務。Co
昵称 藍易雲
從源碼編譯和調試 ROS2 Humble 的詳細指南 在機器人操作系統 ROS2 中,深入理解其源碼並進行調試對開發者來説至關重要。本文將詳細介紹如何在本地環境中編譯和調試 ROS2 Humble 源碼,幫助您更有效地開發和優化機器人應用。 一、環境準備 1. 確保已安裝 ROS2 Humble 首先,確認您的系統已正確安裝 ROS2 Humble。可以通過以下命令驗證: ros2 --vers
昵称 藍易雲
在 SQL Server 數據庫管理中,觸發器能夠在特定的數據庫操作發生時自動執行預先定義的 SQL 語句。觸發器可以用於實現數據完整性約束、審計跟蹤、複雜的業務邏輯等多種功能。本文將深入探討 SQL Server 觸發器(trigger)的概念、類型、工作原理以及實際應用,並通過代碼示例進行演示。 觸發器的概念 觸發器(trigger)是SQL server提供給程序員和數據分析員用來保證數據完
昵称 Chat2DB
隨着雲計算技術的發展以及大數據時代的到來,越來越多的企業開始尋求更加高效、安全的數據管理解決方案。MySQL作為一種開源的關係型數據庫管理系統,在互聯網應用開發中佔據了極其重要的位置;而另一方面,Microsoft SQL Server憑藉其強大的事務處理能力、安全性及與微軟其他產品(如.NET框架)的良好集成度,在企業級應用特別是Windows平台上的表現尤為突出。因此,當組織決定從基於Linu
昵称 RestCloud
MySQL 是一個非常流行的開源關係數據庫管理系統,在各種應用場景中都得到了廣泛的應用。隨着版本的更新,MySQL 8 引入了許多新特性和性能提升,廣泛受到開發者和企業的青睞。為了方便在各種 Linux 發行版中安裝 MySQL 8,MySQL 官方提供了 YUM 倉庫。本指南將介紹如何使用 MySQL 8 官方 YUM 倉庫來安裝和管理 MySQL。 YUM 和 YUM 倉庫簡介 YUM(Yel
@guangmingleiluodetouyingyi_bccdlf
昵称 光明磊落的投影儀