本文目錄一覽:
如何利用mysql設計網站數據庫
簡單用戶表 tb_user:
userid , username
用戶詳細信息表 tb_userinfo
userid , email , homepage , phone , address
把用戶信息分開的目的就是保證經常查詢的數據在一張表,其它信息放到另一張表
論壇主題表 tb_bbs
bbsid , userid , title , ip , repleycount , replyuserid , createtime , lastreplytime
論壇內容標 tb_bbs_content (此表可按照bbsid進行分表存儲)
bbsid , content;
論壇回復表 tb_bbs_reply (此表可按照bbsid進行分表存儲)
replyid , bbsid , userid , content , replytime , ip
MYSQL數據庫的物理設計都包括哪些內容,怎麼設計?
Log File物理結構
從 ib_logfile0和 ib_logfile1這兩個文件的物理結構可以看出,在Log Header部分還是有些許差異的, ib_logfile0會多一些額外的信息,主要是checkpoint信息。
並且每個Block的單位是512字節,對應到磁盤每個扇區也是512字節,因此redo log寫磁盤是原子寫,保證能夠寫成功,而不像index page一樣需要double write來保證安全寫入。
我們依次從上到下來看每個Block的結構
Log File Header Block
Log Goup ID,可能會配置多個redo組,每個組對應一個id,當前都是0,佔用4字節
Start LSN,這個redo log文件開始日誌的lsn,佔用8字節
Log File Number,總是為0,佔用4字節
Created By,備份程序所佔用的字節數,佔用32字節
另外在ib_logfile0中會有兩個checkpoint block,分別是 LOG_CHECKPOINT_1/ LOG_CHECKPOINT_2,兩個記錄InnoDB Checkpoint信息的字段,分別從文件頭的第二個和第四個block開始記錄,並且只在每組log的第一個文件中存在,組內其他文件雖然沒有checkpoint相關信息,但是也會預留相應的空間出來。這裡為什麼有兩個checkpoint的呢?原因是設計為交替寫入,避免因為介質失敗而導致無法找到可用的checkpoint的情況。
Log blocks
請點擊輸入圖片描述
log block結構分為日誌頭段、日誌記錄、日誌尾部
Block Header,佔用12字節
Data部分
Block tailer,佔用4字節
Block Header
這個部分是每個Block的頭部,主要記錄的塊的信息
Block Number,表示這是第幾個block,佔用4字節,是通過LSN計算得來的,佔用4字節
Block data len,表示該block中有多少字節已經被使用了,佔用2字節
First Rec offet,表示該block中作為第一個新的mtr開始的偏移量,佔用2字節
Checkpoint number,表示該log block最後被寫入時的檢查點的值,佔用4字節
Mysql數據庫設計
簡單用戶表 tb_user:
userid , username
用戶詳細信息表 tb_userinfo
userid , email , homepage , phone , address
把用戶信息分開的目的就是保證經常查詢的數據在一張表,其它信息放到另一張表
論壇主題表 tb_bbs
bbsid , userid , title , ip , repleycount , replyuserid , createtime , lastreplytime
論壇內容標 tb_bbs_content (此表可按照bbsid進行分表存儲)
bbsid , content;
論壇回復表 tb_bbs_reply (此表可按照bbsid進行分表存儲)
replyid , bbsid , userid , content , replytime , ip
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247283.html