MySQL的物理儲存結構和session過程
-
MySQL的物理儲存結構
(1).資料的組織形式--索引
(2).資料的row儲存
compact
變長欄位的儲存:
可變長度列在評估欄位大小時還要考慮儲存列實際長度的位元組數。例如,VARCHAR(255)CHARACTER SET UTF8列需要額外的兩個位元組來儲存值長度資訊,所以該列需要多達767個位元組儲存,其實最大可以儲存65533位元組,剩餘兩個位元組儲存長度資訊。
行溢位的處理:
資料表Row_format是Compact, innodb預設的approach儲存格式會把每個blob欄位的前864個位元組儲存在page裡,所以blob超過一定數量的話,單行大小就會超過8k ,所以就報錯了。通過對比業務寫成功和失敗的SQL也應徵了這個推論,那麼現在要怎麼解決這個問題?
- 業務拆分表,大欄位進行分表儲存
-
通過解決Row_format的儲存方式解決問題
由於業務單表的儲存條數並不大,而且業務邏輯不適合拆分,所以我們要在Row_format上來解決這個問題。
如果blob列值長度 <= 768 bytes,不會發生行溢位(page overflow),內容都在資料頁(B-tree Node);如果列值長度 > 768位元組,那麼前768位元組依然在資料頁,而剩餘的則放在溢位頁(off-page)
所以,此種格式的唯一值索引長度不能超過767
Barracuda
Barracuda檔案格式下擁有兩種新的行記錄格式Compressed和Dynamic兩種,新的兩種格式對於存放BLOB的資料採用了完全的行溢位的方式,在資料頁中只存放20個位元組的指標,實際的資料都存放在BLOB Page中。Compressed行記錄格式的另一個功能就是儲存在其中的資料會以zlib的演算法進行壓縮。
dynamic行格式,列儲存是否放到off-page頁,主要取決於行大小,它會把行中最長的那一列放到off-page,直到資料頁能存放下兩行。TEXT/BLOB列 <=40 bytes 時總是存放於資料頁。可以避免compact那樣把太多的大列值放到 B-tree Node,因為dynamic格式認為,只要大列值有部分資料放在off-page,那把整個值放入都放入off-page更有效。
變長列
在InnoDB中,變長列(
variable-length column
)可能是以下幾種情況
-
長度不固定
的資料型別,例如VARCHAR
、VARBINARY
、BLOB
、TEXT
等 -
對於
長度固定
的資料型別,如CHAR
,如果實際儲存
佔用的空間大於768Byte
,InnoDB會將其視為變長列 -
變長編碼
下的CHAR
NULL值標識位
指示了該行資料列中是否有NULL值,這個欄位的長度和表的列數有關,每一列對應一個bit位
2. session的執行過程
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25380026/viewspace-2643521/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL儲存過程的建立和使用MySql儲存過程
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- mysql 儲存過程MySql儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- MySQL之儲存過程MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- mysql儲存過程整理MySql儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- mysql儲存過程的引數MySql儲存過程
- MySQL的session過程MySqlSession
- mysql如何呼叫儲存過程MySql儲存過程
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- Mysql 5.7儲存過程的學習MySql儲存過程
- Mysql-Innodb : 從一個位元組到整個資料庫表瞭解物理儲存結構和邏輯儲存結構MySql資料庫
- Linux物理儲存結構以及磁碟劃分Linux
- MySQL儲存過程 (即函式)MySql儲存過程函式
- mySql 儲存過程與函式MySql儲存過程函式
- Laravel 中使用 MySQL 儲存過程LaravelMySql儲存過程
- MySql資料庫——儲存過程MySql資料庫儲存過程
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- PG的物理儲存結構、版本控制、空間回收
- MySQL的寫入資料儲存過程MySql儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- MySQL儲存過程in、out、inout引數示例與總結MySql儲存過程
- MySQL的varchar儲存原理:InnoDB記錄儲存結構MySql
- MySQL儲存過程語句及呼叫MySql儲存過程
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- MySQL--儲存過程與檢視MySql儲存過程
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- 【MySQL】MySQL(三)儲存過程和函式、觸發器、事務MySql儲存過程函式觸發器
- MySQL儲存過程的許可權問題MySql儲存過程
- MySQL儲存過程的異常處理方法MySql儲存過程
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式
- MySQL怎樣透過Adjacency List儲存樹形結構?MySql