《mysql 是怎樣執行的:從根兒上理解 mysql》第五節:從一條記錄說起——innodb記錄結構
現在只知道客戶端傳送請求並等待伺服器返回結果。
mysql什麼方式來訪問這些資料?
mysql伺服器上負責對錶資料的讀取和寫入工作的部分是儲存引擎。
什麼格式存放?
真實的資料在不同儲存引擎中存放的格式一般是不同的。
innodb將資料劃分為若干個頁,以頁作為磁碟和記憶體的互動的基本單位,innodb也的大小一般為16kb。
innodb儲存引擎有四種不用型別的行個格式,compact、redundant、dynamic和compressed行格式
指定行格式的語法
create table 表名 (列的資訊) row_format=行格式名稱
alter table 表名 row_format=行格式名稱
案例:create table record_format_demo (
c1 varchar(10),
c2 varchar(10) not null,
c3 char(10),
c4 varchar(10)
)charset=ascii row_format=compact;
compact行格式
一行記錄包含
記錄的額外資訊
變長字段長度列表:
記錄每個變長列資料占用的位元組長度,倒敘存放。
wml記錄,還要再學習。
可以不需要,比如:表的每個列都不是變長的資料型別就沒有。
null值列表:
首先統計允許從儲存null的列,主鍵列、被not null修飾的列不可以儲存null值。
表中麼有允許null值的列,null值列表也就不存在了。
允許儲存null的列對應乙個二進位制位。
二進位制位的值為1,表示該列值為null。
二進位制位的值為0,表示該列值不為null。
二進位制位按照逆序排列,第乙個列和最後乙個二進位制位對應。
mysql規定null值列表必須用整數個位元組位表示,如果使用的二進位制位不是整數個位元組,則在高位補0
記錄頭資訊:
五個固定位元組組成,其他後面學習。
記錄的真實資料
隱藏列,除了真實資料mysql還會新增三個隱藏列。
row_id:可選。在沒有主鍵,也沒有定義unique鍵的列,innodb才會為表新增。
transaction_id:必選,事物id
roll_pointer:必選,回滾指標
資料列非變成字段,沒儲存地方,空格字元填充。
儲存為null的列,在前面的null值列表中有儲存,不會再記錄,節省空間。
char(m)列的儲存格式
列採用定長字符集,該列占用的位元組數不會被加到變長字段長度列表,
如果採用變長字符集時,該列占用的位元組數也會被加到變長字段長度列表。
用字符集最大的位元組佔空間,防止後面修改資料需要的空間變大而重新分配空間導致碎片。
redundant行格式:mysql5.0以前的一種行格式(沒多看 略)
一行記錄包含
記錄的額外資訊
字段長度偏移列表
沒有變長,說明會記錄所有的列(包括隱藏列)。
偏移:表示它是採用兩個相鄰值的差值來計算各個列值的長度。
記錄頭資訊
記錄真實資料
varchar(m)最多能儲存的資料?
計算方式不太理解,後面再學習一次。
記錄資料太多產生的溢位
乙個頁的大小一般是16kb,也就是16384位元組,可能一行記錄超過16384個位元組。
第五節 web爬蟲之urllib(一)
一 urllib.request.urlopen url,data none,timeout,cafile none,capath none,cadefault false,context none 簡介 urllib.request.urlopen 函式用於實現對目標url的訪問 引數詳解 url...
第一章 第五節 JFace
返回目錄 jface構建於swt之上,提供了swt的功能和mvc模式的易用性。swt使用直接的api提供了原生 raw 的控制項。例如,你建立乙個表 table 控制項,然後插入你想顯示的行和列的資料。jface提供了在swt之上的抽象層,所以您只需對抽象層程式設計,然後抽象層會呼叫swt api,...
python程式設計 第一章 第五節
前面已經提到,idle整合開發環境 ide 隨著python直譯器起安裝。pyhon 整合開發環境能夠幫助開發者提高開發效率 加快開發的速度。高效的ide一般會提供外掛程式 工具等幫助開發者提高效率。本書使用idle作為開發工具。本節簡要介紹另外三款免費的整合開發環境。eclipse中的pydev外...