原创 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 .