【MySQL數據庫】第四章解讀:Schema與數據類型優化(上)

前言:

? ? 高性能的基石:良好的邏輯、物理設計,根據系統要執行的查詢語句設計schema

?? ? 本章關注mysql數據庫設計,介紹mysql數據庫設計與其他關系型數據庫管理系統的區別

schema:【源】

? ? ? ?schema就是數據庫對象的集合,這個集合包含了各種對象如:表、視圖、存儲過程、索引等。為了區分不同的集合,就需要給不同的集合起不同的名字,默認情況下一個用戶對應一個集合,用戶的schema名等于用戶名,并作為該用戶缺省schema。所以schema集合看上去像用戶名。

? ? ? ?如果把database看作是一個倉庫,倉庫很多房間(schema),一個schema代表一個房間,table可以看作是每個房間中的儲物柜,user是每個schema的主人,有操作數據庫中每個房間的權利,就是說每個數據庫映射的user有每個schema(房間)的鑰匙。 SQL server和oracle mysql有別

4.1選擇優化的數據類型

原則:

1、更小的通過更好,盡量使用可正確存儲數據的最小的數據類型(占更少的磁盤 內存 CPU緩存,處理時需要CPU周期更少:更快),但能罩得住數據,存不下就尷尬了

2、簡單就好:簡單類型(更少CPU周期),使用MySQL內建類型存時間,整型存ip,整型較字符代價低(字符集和校對排序規則使字符較復雜)

3、盡量避免NULL:最好指定為not null

? ? ? ? *)null列使用更多的存儲空間,mysql里需要特殊處理

? ? ? ? *)null使索引、索引統計和值比較更復雜;可為null的列被索引時,每個索引記錄需額外的字節

? ? ? ? 例外:InnoDB使用單獨位bit存儲null,so對于稀疏數據(很多值為null)有很好的空間效率,不適合MyISAM

4.1.1整數類型【參考】

整數whole number

tinyint(8位存儲空間) ?smallint(16) ?mediumint(24) ??int(32) ? ?bigint(64)

1、存儲值的范圍:【MySQL數據庫】第四章解讀:Schema與數據類型優化(上),N是存儲空間的位數

2、unsigned:可選、不容許負值,可使正數的上限提高一倍:tinyint unsigned 0~255,tinyint-128~127

3、有無符號使用相同的存儲空間,相同的性能

可為整型指定寬度,例如INT(11),對于大多數應用無意義,不會限制值的合法范圍,只是規定了交互工具顯示字符的個數,對于存儲和計算,int(1)和int(20)是相同的;

實數real number:帶小數

Floatdouble,mysql使用duble作為內部浮點計算的類型

decimal:存儲精確的小數,mysql服務器自身實現,decimal(18,9)18位,9位小數,9個字節(前4后4點1)

? ? ? ?盡量只在對小數進行精確計算時才使用(額外的空間和計算開銷),如財務數據

? ? ? 數據量大時,考慮使用bigint代替,將需要存儲的貨幣單位據小數的位數乘以相應的倍數

浮點:

? ? ? ? 建議:只指定類型、不定精度(mysql),這些精度非標準,mysql會悄選類型、或存時對值取舍

? ? ? ??存儲同樣范圍的值時,比decimal更少的空間,float4字節存 double8字節(更高精度范圍)

4.1.3字符串類型

varchar和char:

前提:innodb和myisam引擎,最主要的字符串類型

磁盤存儲:存儲引擎存儲的方式與在內存、磁盤上的不能不一樣,所以mysql服務器從引擎取值需轉格式

varchar:

1、存儲可變字符串,比定長節省空間(僅使用必要的空間),但如果表使用row_format=fixed,行會定長存儲

2、需使用1/2額外字節記錄字符串長度;1)列max長度

3、節省存儲空間,利于性能;但在update可能使行變得比原來更長、需做額外工作

合適的情況:

? ? 1)字符串列最大長度比平均長度大很多;2)列的更新少(不擔心碎片);3)使用UTF-8字符串,每個字符均使用不同的字節數存儲

char:

1、定長,據長度分配空間,刪除all末尾空格;長度不夠、空格填充

2、存儲空間上更有效率,char(1)來存儲只有Y N的值 1個字節 ,varchar2字節,還有一個記錄長度

適合的情況:

? ? ? 1)適合存儲很短的字符串;2)或all值接近同一個長度;3)經常變更的數據,存儲不易碎片

對應空格、存儲:

char類型存儲時末尾空格被刪;數據如何存儲取決于存儲引擎,Memory引擎只支持定長的行(最大長度分配空間)

binary,varbinary:存儲二進制字符串字節碼,長度不夠、

国产成人久久AV免费| 亚洲精品蜜桃久久久久久| 久久婷婷国产综合精品| 久久久中文字幕| 亚洲精品高清一二区久久| 无码人妻久久久一区二区三区| 久久久久亚洲AV成人片| 久久综合伊人77777| 久久综合狠狠综合久久| 99久久精品国产一区二区| 亚洲伊人久久精品影院| 91麻豆精品国产91久久久久久| 国内精品久久久久久麻豆 | 久久99精品国产99久久| 久久99热这里只有精品66| 91久久九九无码成人网站| 久久久一本精品99久久精品88| 久久久久久国产a免费观看不卡| 91视频国产91久久久| 久久99精品久久只有精品| 亚洲欧美日韩精品久久亚洲区 | 久久亚洲精品人成综合网| 久久久久久久亚洲精品| 996久久国产精品线观看| 久久久久久久91精品免费观看| 国产高潮久久免费观看| 国产免费久久精品99久久| 精品综合久久久久久888蜜芽| 一97日本道伊人久久综合影院| 色综合久久天天综合| 国产精品美女久久久| 久久久久亚洲av无码专区喷水| 欧美日韩精品久久久久| 久久久久综合中文字幕| 亚洲国产成人久久精品99| 青春久久| 久久久久亚洲AV成人片| 东京热TOKYO综合久久精品| 亚洲色婷婷综合久久| 国产精品美女久久久久久2018| 久久99精品久久久久久动态图|