原创 mysqlbinlog工作流程

mysqlbinlog主要流程: main函數:     dump_multiple_logs: 處理所有的binlog文件          注意PRINT_EVENT_INFO print_event_info; 該變量描述了mysq

原创 mysql 賬戶登錄的處理流程

現場環境mysql賬戶登錄錯誤,用戶名和密碼都確認過沒有問題的。報錯信息如下: ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password:

原创 mysql binlog日誌(一)概述

mysql binlog是mysql主備複製的基礎。筆者根據自己的理解整理下這部分的內容(主要針對V4版本的binlog),希望能夠對想深入學習和研究這部分內容的人提供幫助。在binlog相關內容講解完畢後,會分享一個解析binlog文件

原创 mysql binlog日誌(二) FORMAT_DESCRIPTION_EVENT、XID_EVENT等

本節介紹幾種常用的binlog event。 FORMAT_DESCRIPTION_EVENT: 該事件是binlog文件的第一個事件。描述了版本信息、各種類型event的post_header的長度、checksum算法。對應的格式如下

原创 redis跳錶的實現

看了redis的跳錶的源碼,感覺代碼的實現非常短小精悍。 redis中跳錶主要實現:增刪改查, 除了這幾個常規功能之外,還有一個很牛逼且很實用的功能:獲取節點的rank排名、或者獲取指定範圍rank的節點。 redis中跳錶的實現 typ

原创 mysql常用數據結構介紹(1)

mem_root mysql層通過mem_root管理內存分配,防止頻繁分配和釋放小內存。 mem_root的定義見include/my_alloc.h: typedef struct st_mem_root {   USED_MEM

原创 CSV存儲引擎源碼解析

csv存儲引擎是mysql自帶的一種簡單的存儲引擎,可以直接處理CSV文件。 該存儲引擎特點: 1.所有的列不能爲NULL 2.不支持索引 3.不支持分區表 4.該存儲引擎的數據文件是普通的csv文件,可以直接拷貝出來使用或編輯。 該存儲

原创 mysql .par文件格式解析

mysql 5.6版本分區表有一個文件:表名.par, 該文件在5.7.6版本後被移除。 在一個現場環境中,客戶端執行check table後報錯如下,源碼跟蹤下來之後是缺失par文件。   mysql解析par文件的調用堆棧如下: (

原创 mysql配置文件和啓動參數的處理

概述 本文簡單梳理了mysql配置文件和啓動參數的讀取和解析過程 相關處理源碼 load_defaults函數:  這個函數在mysqld_main函數開始的地方調用,注意load_default_groups參數:mysqld、serv

原创 mysql報文通信:報文的接收和發送函數

文章中的源碼來自mysql 5.7.10版本。 1. NET結構              該結構定義了網絡連接描述符,本結構是實現接收和發送協議數據的核心。該結構的定義在include\mysql_com.h              

原创 mysql 客戶端登陸處理流程

現場環境mysql賬戶登錄錯誤,用戶名和密碼都確認過沒有問題的。報錯信息如下: ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password:

原创 mysql報文通信:基本結構介紹

mysql client和server端之間的的數據根據不同的協議規則的進行組織發送。每包數據在發送的時候都要添加上協議頭。 mysql源碼採用5.7.10版本。 協議頭:            每個協議頭共4個字節          

原创 Mysql 複製介紹

MySQL 複製執行流程: 1. Master上語句執行解釋之前,將更新數據庫的操作記錄在二進制日誌中(select語句不記錄)。 2.Master上有個轉儲線程,讀取二進制日誌文件的內容發送到slave機器的I/O線程上。 3.slav

原创 ORA-25153: Temporary Tablespace is Empty 錯誤處理

一個生產環境現場報錯:ORA-25153: Temporary Tablespace is Empty  該現場前幾天由其他同事重建過控制文件,懷疑是控制文件導致。處理步驟如下: 1. 首先查詢臨時文件是否存在:       可以看到數據

原创 oracle 臨時表性能下降

oracle生產環境上有個存儲過程運行一段時間之後性能下降。初步定位後發現是臨時表的插入性能降低: insert into  臨時表A (...) select ... from ... .      其中select .. from .