原创 MySQL如何避免全表掃描

MySQL全表掃描在大多數場景下性能都是非常低下的,尤其在表數據量特別大的情況下,全表掃描會耗盡數據庫資源,嚴重時會導致數據庫服務不可用,數據庫崩潰,因此,業務SQL在發佈上線前,應當檢查是否會導致全表掃描。 原文地址: ht

原创 如何開發一個自定義的MySQL插件

MySQL自帶了很多插件,比如半同步插件、審計插件、密碼驗證插件等等,甚至MySQL存儲引擎也是以插件方式實現的。MySQL開放的插件接口,爲開發者開發自定義插件提供了便利。本文將介紹如何快速開發一個自定義的MySQL插件。

原创 MySQL 主從冪等複製slave_exec_mode=IDEMPOTENT

MySQL slave_exec_mode 參數用於控制主從複製數據衝突時的處理策略,可選值有STRICT和IDEMPOTENT,分別代表嚴格模式和冪等模式,默認值爲STRICT,該參數可動態調整。 原文地址: https:/

原创 MySQL主從複製主庫binlog dump線程源碼分析

在之前的文章《mysql主從複製io線程源碼分析》,我們分析了MySQL從庫的io線程工作的主要過程,大致回顧一下,如下: 連接主庫 發送COM_REGISTER_SLAVE命令註冊從庫 發送COM_BINLOG_DUMP_GT

原创 MySQL8.0新特性CTE(Common Table Expression)

CTE(Common Table Expression)可以認爲是派生表(derived table)的替代,在一定程度上,CTE簡化了複雜的join查詢和子查詢,提高了SQL的可讀性和執行性能。CTE是ANSI SQL 99標

原创 markdown在線編輯工具,在線渲染,轉換html

今天偶然看到一篇文章,講的是一個開源的markdown渲染工具Markdeep,它能夠將Markdown格式的文本渲染出來,並在網頁上展示。另外,Markdeep還支持非markdown格式的純文本渲染,以及額外支持圖表、數學方程

原创 MySQL性能優化-索引條件下推ICP(Index Condition Pushdown)

索引條件下推,Index Condition Pushdown,簡稱ICP,是MySQL通過索引查詢數據的一種優化方法,對於特定場景下的SQL優化具有明顯的性能提高。 原文地址: https://mytecdb.com/blo

原创 PostgreSQL訪問控制,允許&禁止指定IP訪問

PostgreSQL中允許哪些IP的機器能夠訪問數據庫是由配置文件pg_hba.conf控制的,通過配置該文件,能夠指定哪些ip可以訪問,哪些ip不可以訪問,以及訪問的認證方式。hba是host-based authentica

原创 MySQL主從複製過濾

MySQL主從複製是邏輯複製,基於Binlog進行主從數據傳輸,MySQL提供了豐富的參數來配置主從複製過濾條件。在主庫可以設置對於庫的數據寫入是否寫入binlog,在從庫可以設置對某些庫或者表的binlog是否忽略。本文將簡單描

原创 MySQL count(*),count(1),count(field)區別、性能差異及優化建議

count函數是用來獲取表中滿足一定條件的記錄數,常見用法有三種,count(*),count(1),count(field),這三種有什麼區別?在性能上有何差異?本文將通過測試案例詳細介紹和分析。 原文地址: mytecdb

原创 MySQL主從複製從庫IO線程源碼分析

mysql主從複製通過binlog來同步數據,在從庫上執行start slave,會開啓兩個線程,分別是io線程和sql線程。io線程負責從主庫拉取binlog並存儲到本地的relay log,sql線程負責把relay log

原创 MySQL主從複製從庫SQL線程源碼分析

MySQL主從複製通過Binlog進行數據傳輸,主庫寫入數據,生成Binlog,通過dump線程將Binlog發送給從庫,從庫IO線程接收Binlog並寫入自己的relay log,SQL線程應用relay log裏的事務。本文

原创 MySQL性能優化-條件過濾(Condition Filtering)

MySQL在處理join查詢時,遍歷驅動表的記錄,把驅動表的記錄傳遞給被驅動表,然後根據join連接條件進行匹配。優化器通常會將更小的表作爲驅動表,通過在驅動表上做額外的where條件過濾(Condition Filtering

原创 MySQL SQL性能分析 show profile

MySQL show profile 和 show profiles 命令用於展示SQL語句執行過程中的資源使用情況,包括CPU的使用,CPU上下文切換,IO等待,內存使用等,這個命令對於分析某個SQL的性能瓶頸非常有幫助,藉助

原创 MySQL SQL性能分析 Profiling Using Performance Schema

MySQL一直以來提供show profile命令來獲取某一條SQL執行過程中的資源使用與耗時情況,這個命令對於分析具體SQL的性能瓶頸有非常大的幫助,但是這個功能在MySQL新的版本里將會被廢棄,取而代之的是使用Perform