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 的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- mysql 儲存過程和事件排程MySql儲存過程事件
- MySQL儲存過程的建立和使用MySql儲存過程
- mysql的儲存過程MySql儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- bbs的資料結構和儲存過程(二) (轉)資料結構儲存過程
- bbs的資料結構和儲存過程(一) (轉)資料結構儲存過程
- bbs的資料結構和儲存過程(三) (轉)資料結構儲存過程
- mysql 儲存過程MySql儲存過程
- oracle物理儲存結構理解Oracle
- Mysql 儲存過程的使用MySql儲存過程
- mysql儲存過程的修改MySql儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- mysql儲存過程整理MySql儲存過程
- MySQL之儲存過程MySql儲存過程
- [MYSQL -23儲存過程]MySql儲存過程
- MYSQL儲存過程管理MySql儲存過程
- mysql儲存過程例子MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- mysql儲存過程的引數MySql儲存過程
- 【Mysql】Mysql儲存過程學習MySql儲存過程
- MySQL和Oracle對比之儲存過程MySqlOracle儲存過程
- MySQL 5.5 建立儲存過程和函式MySql儲存過程函式
- MySQL4:儲存過程和函式MySql儲存過程函式
- mysql如何呼叫儲存過程MySql儲存過程
- mysql儲存過程案例解析MySql儲存過程
- mysql儲存過程詳解MySql儲存過程
- MySQL儲存過程SAVEPOINT ROLLBACK toMySql儲存過程
- MySql體系結構和儲存引擎MySql儲存引擎
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- MySQL的session過程MySqlSession