整數型別:(whole number 和 real number),whole number可以使用tinyint,smallint,mediumint,int,bigint,分別占用8,16,24,42,64位。real number主要有float和double,支援浮點運算,float 和 double 容易產生誤差,decimal儲存精確的小數,申明語法為decimal(m,d),m整數字,d小數字。
字串型別:字串型別主要有varchar和char型別,varchar用於儲存可變長的字串,char用於儲存變長的字串。varchar需要一到兩個位元組儲存字串的長度。
blob和text:為儲存很大的資料而設計的資料型別,blob採用二進位制儲存,text採用字元儲存。當blob和text太大時,會儲存乙個指標指向外部的實際資料。
日期和時間型別:datetime 時間從1001到2023年,封裝為(yyyymmddhhmmss)格式,需要8個位元組儲存,精確到秒。timestamp從2023年開始,,需要4個位元組,精確到秒,時區。
bit位儲存型別,set型別,位的集合。
schema 設計需要避免的問題:太多的列,太多的關聯,太多的列舉,變相的列舉。
正規化:資料唯一儲存在資料庫中,沒有冗餘,保證一致性。
發正規化:資料有冗餘,減少多表交叉查詢,可以提高查詢速度。
實現實時統計是很昂貴的操作,這需要掃瞄資料庫中大部分資料,通過間隔分時彙總表+小範圍的實時減少資料庫負載。
物理化檢視實際通過預先計算並儲存到物理磁碟上的表,通過策略重新整理和更新。
計數器表:主要通過update set num=num+1,這種會有併發的問題,只能序列執行。也可以儲存多行,通過sum進行並行統計。
mysql執行修改表結構的操作:新建乙個新錶,將舊表的資料插入到新錶中去,然後刪除舊表。
對於常見的場景主要有兩種方式進行:一,先在一台空閒的伺服器上執行alter table,之後與主庫進行切換。二,建乙個別名的表,之後通過刪除與重新命名替換舊表。
因為表的結構和屬性資訊在.frm檔案中,可以直接修改.frm檔案。
高效能mysql讀書筆記三
架構優化和索引 1.資料型別 浮點 float和double使用的是平台的浮點數,分別占用4位元組和8位元組。decimal是表示精確的小數。字串 varchar 255 表示最大長度255位元組,對於uft 8編碼,將不知道能保留多少字元,中文是3位元組,字母1位元組,這一點要注意。另外設高上限,...
高效能Mysql 讀書筆記(三)
本文為 高效能mysql 第三版 第四章讀書筆記,mysql版本為5.5 索引的重要性 找一本800面的書的某一段內容,沒有目錄也沒有頁碼 頁碼也可模擬是索引 對於很早的版本,一直強調 最左字首匹配,索引使用順序,不可跳過索引中的列等等,但高效能mysql一書之後的版本中對於 mysql優化器進行了...
高效能MySQL 讀書筆記
第4章 schema與資料型別優化 第5章 建立高效能的索引 三星索引 最左匹配原則 高效能索引策略 多列索引 mysql採用的是分層架構 上層是server層,下層是儲存引擎層。sql標準中定義了四種隔離級別 隔離級別 定義髒讀 不可重複讀 幻讀加鎖讀 讀未提交 read uncommitted,...