日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql关系模式怎么画_关系数据库与mysql

發布時間:2023/12/20 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql关系模式怎么画_关系数据库与mysql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面是阿里的mysql設計原則,可以參考,不一定按照阿里規則,但一個團隊一定要有規則,如果現在沒有規則,從現在開始,慢慢推廣,適應

1.【強制】表達是與否概念的字段,必須使用 is_xxx的方式命名,數據類型是 unsigned tinyint( 1表示是,0表示否) 說明:任何字段如果為非負數,必須是 unsigned。

2.【強制】表名、字段名必須使用小寫字母或數字;禁止出現數字開頭,禁止兩個下劃線中間只出現數字。數據庫字段名的修改代價很大,因為無法進行預發布,所以字段名稱需要慎重考慮。 正例:getter_admin,task_config,level3_name 反例:GetterAdmin,taskConfig,level_3_name

3.【強制】表名不使用復數名詞。 說明:表名應該僅僅表示表里面的實體內容,不應該表示實體數量,對應于 DO類名也是單數形式,符合表達習慣。

4.【強制】禁用保留字,如 desc、range、match、delayed等,請參考 MySQL官方保留字。

5.【強制】唯一索引名為 uk_字段名;普通索引名則為 idx_字段名。 說明:uk_ 即 unique key;idx_ 即 index的簡稱。

6.【強制】小數類型為 decimal,禁止使用 float和 double。 說明:float和 double在存儲的時候,存在精度損失的問題,很可能在值的比較時,得到不正確的結果。如果存儲的數據范圍超過 decimal的范圍,建議將數據拆成整數和小數分開存儲。

7.【強制】如果存儲的字符串長度幾乎相等,使用 char定長字符串類型。

8.【強制】varchar是可變長字符串,不預先分配存儲空間,長度不要超過 5000,如果存儲長度大于此值,定義字段類型為 text,獨立出來一張表,用主鍵來對應,避免影響其它字段索引效率。

9.【強制】表必備三字段:id, gmt_create, gmt_modified。 說明:其中 id必為主鍵,類型為 unsigned bigint、單表時自增、步長為 1。 gmt_create,gmt_modified的類型均為 date_time類型。

10.【推薦】表的命名最好是加上“業務名稱_表的作用”。 正例:tiger_task / tiger_reader / mpp_config

11.【推薦】庫名與應用名稱盡量一致。

12.【推薦】如果修改字段含義或對字段表示的狀態追加時,需要及時更新字段注釋。

13.【推薦】字段允許適當冗余,以提高性能,但是必須考慮數據同步的情況。冗余字段應遵循: 1)不是頻繁修改的字段。 2)不是 varchar超長字段,更不能是 text字段。 正例:商品類目名稱使用頻率高,字段長度短,名稱基本一成不變,可在相關聯的表中冗余存儲類目名稱,避免關聯查詢。

14.【推薦】單表行數超過 500萬行或者單表容量超過 2GB,才推薦進行分庫分表。 說明:如果預計三年后的數據量根本達不到這個級別,請不要在創建表時就分庫分表。

15.【參考】合適的字符存儲長度,不但節約數據庫表空間、節約索引存儲,更重要的是提升檢索速度。 正例:人的年齡用 unsigned tinyint(表示范圍 0-255,人的壽命不會超過 255歲);海龜就必須是 smallint,但如果是太陽的年齡,就必須是 int;如果是所有恒星的年齡都加起來,那么就必須使用 bigint

創建索引的原則

1. 對查詢條件,分組條件,排序條件的字段創建索引,有可能是多列索引,update時后面的條件語句也屬于查詢條件

2. 創建索引對更新插入刪除有影響,相反

3. 索引字段的長度越小越好,這里指的是性能

Mysql存儲引擎使用的B+Tree

B+樹是演變過來的,首先是二叉查找樹,平衡二叉樹,B樹

1.二叉查找樹,樹種結點的度不大于2的有序樹,最多結點數:2^n -1 ,n為數的高度,如n=3,最多7個結點,n=5,最多31個結點(達到最大結點數叫做滿二叉樹)

某一層的最多結點個數 2^(n-1) ,如果n=3,第三層最多4個結點,如n=30,第31層最多 2^30=1073741824,記住這一點,后面會用到

2. 二叉樹如果在不控制的情況下會變為一條直線,失去了查找優勢,這時出現二叉平衡樹

3. B樹,二叉樹實際情況無法使用,因為需要n多次的磁盤IO,B樹,一個結點存儲更多的key,同時存儲數據

4. B+樹,為了存儲更多的key值,同時考慮到數據庫查詢的其它需要,B樹結點不存儲數據,只存儲key,所有數據存儲在葉子結點

5. mysql默認頁大小16k,能存儲多少數據記錄和數據庫記錄大小有關系,假設葉子結點存儲16條數據,一條記錄大小1K,非葉子結點存儲1000個key

高度為3 ,總記錄數就是 1000*1000*16 = 16000000.

視圖,記錄,字段

每種數據庫有自己視圖,我們常說的視圖一般是關系視圖,可以關聯一張或幾張表,方便信息查詢和權限控制等

數據庫事務

ACID ,mysql數據庫隔離級別 ,Read Uncommited ,Read Commited ,Repeatable Read,Serialiable,注意,mysql是這幾種隔離級別,其它數據庫不一定有

臟數據,讀到了沒有提交的數據

不可重復讀,一個事務在執行過程中,兩次讀的數據不一致,解決方法是mvvc

幻讀,數據做了插入或刪除操作,但是其它事務插入或刪除了某條數據,出現沒有刪除干凈,或者都刪除了的情況,在可重復讀的隔離級別下,快照讀不會出現幻讀,當前讀時,innodb 通過間隙鎖和行鎖共同作用控制,使得查詢語句掃描到的數據及數據中間不能插入也不允許修改,從而不會出現幻讀現象。

SQL和存儲過程

SQL99和SQL92

總結

以上是生活随笔為你收集整理的mysql关系模式怎么画_关系数据库与mysql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。