版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)、優(yōu)化葉金榮微博: yejinrong微信公眾號(hào): MySQL中文網(wǎng)QQ群: 125572178、2726754722013.08.20提綱規(guī)范基礎(chǔ)規(guī)范命名規(guī)范庫(kù)表規(guī)范字段規(guī)范索引規(guī)范開(kāi)發(fā)環(huán)境優(yōu)化規(guī)范基礎(chǔ)規(guī)范全部使用InnoDB引擎,MyISAM適用場(chǎng)景非常少字符集:latin1 = utf8 = gbk用數(shù)據(jù)庫(kù)來(lái)持久化存儲(chǔ)以及保證事務(wù)一致性,不是運(yùn)算器讀寫(xiě)分離,主庫(kù)只寫(xiě)和少量實(shí)時(shí)讀取請(qǐng)求采用隊(duì)列方式合并多次寫(xiě)請(qǐng)求,持續(xù)寫(xiě)入,避免瞬間壓力超長(zhǎng)text/blob進(jìn)行垂直拆分,并先行壓縮冷熱數(shù)據(jù)進(jìn)行水平拆分,LRU原則快速更新大數(shù)據(jù)表禁止直接運(yùn)行count(*)統(tǒng)計(jì)規(guī)范基礎(chǔ)規(guī)范
2、單表行記錄數(shù)控制在1000萬(wàn)以內(nèi),行平均長(zhǎng)度控制在16KB以內(nèi),單表20GB以內(nèi)單實(shí)例下數(shù)據(jù)表數(shù)量不超過(guò)2000個(gè),單庫(kù)下數(shù)據(jù)表數(shù)量不超過(guò)500個(gè)禁止開(kāi)發(fā)環(huán)境直連線上生產(chǎn)環(huán)境最少授權(quán),只授予最基礎(chǔ)權(quán)限需求壓力分散,在線表和歸檔表(日志表)分開(kāi)存儲(chǔ)線上數(shù)據(jù)庫(kù)和測(cè)試數(shù)據(jù)庫(kù)盡可能保持一致禁止明文存儲(chǔ)機(jī)密數(shù)據(jù),需至少兩次加密(部分?jǐn)?shù)據(jù)可逆運(yùn)算)規(guī)范命名規(guī)范涉及系統(tǒng)目錄、文件、數(shù)據(jù)庫(kù)、表、字段名強(qiáng)烈建議只用小寫(xiě)字符、數(shù)字、下劃線組合命名長(zhǎng)度不超過(guò)32個(gè)字符不使用select、show、update等保留字全英文或全中文,言之有意,不要半洋半中臨時(shí)用加上 tmp/temp 前綴/后綴統(tǒng)計(jì)表加上 stat/
3、statistic 前綴/后綴歷史歸檔加上完整日期,例如:20130802 mkdir -p /backup/user_log/2013/08 create table user_detail create table xxx_1234 create table access_log_20130820規(guī)范庫(kù)表規(guī)范少用分區(qū)表等未完善的新特性不對(duì)InnoDB引擎表做在線實(shí)時(shí)count(*)統(tǒng)計(jì)分庫(kù)、分表策略以用戶ID=123456為例,取N/100%10=4,取N%10=6最大10個(gè)分庫(kù),10個(gè)分表,共100個(gè)分表則分配到DB_04庫(kù)下,分表TABLE_06中采用預(yù)存映射關(guān)系動(dòng)態(tài)分配更靈活,不受分
4、表算法變化而影響,但數(shù)據(jù)庫(kù)開(kāi)銷大規(guī)范字段規(guī)范用timestamp(4字節(jié)int unsigned,且效率非常高)記錄時(shí)間,而非使用date/datetime/char/varcharIPV4地址采用4字節(jié)int unsigned,內(nèi)置INET_ATON/INET_NTOA快速轉(zhuǎn)換,采用char至少15字節(jié)性別、狀態(tài)、是否、小范圍枚舉使用tinyint(0 255,或 -128 127)SignedUnsignedTinyint-1281270255Samllint-3276832767065535Mediumint-83886088388607016777215Int-214748364821
5、4748364704294967295Bigint-92233720368547758089223372036854775807018446744073709551615規(guī)范字段規(guī)范char(10) VS varchar(10)盡可能不使用text/blob類型存儲(chǔ)字符型數(shù)據(jù)時(shí),盡可能先壓縮或者序列化注意字符集問(wèn)題,server=database(trigger、stored procedure、event scheduler)=table=column不要同時(shí)指定字符集(character set)和校驗(yàn)集(collect set),避免出現(xiàn)和默認(rèn)對(duì)應(yīng)關(guān)系不一致ValueCHAR(4)Sto
6、rage RequiredVARCHAR(4)Storage Required 4 bytes1 byteabab 4 bytesab3 bytesabcdabcd4 bytesabcd5 bytesabcdefghabcd4 bytesabcd5 bytes規(guī)范字段規(guī)范顯式指定自增 int/bigint unsigned not null 作為主鍵杜絕使用UUID/HASH/MD5類型作為主鍵無(wú)須預(yù)留,越短越好,此處無(wú)須18cm O(_)O哈哈MySQL 5.5以上,Online DDL越來(lái)越方便顯式約束:NOT NULL規(guī)范SQL規(guī)范簡(jiǎn)化每一條SQL,短事務(wù)、快速執(zhí)行、無(wú)阻塞固定模式業(yè)務(wù)邏
7、輯封裝成存儲(chǔ)過(guò)程用括號(hào)顯式確定AND、OR的先后順序,避免混淆注意引號(hào)問(wèn)題會(huì)導(dǎo)致類型轉(zhuǎn)換(where id = 1234)所有查詢想盡一切辦法使用索引:主鍵=唯一索引=索引有些查詢只需要掃描索引,無(wú)需掃描數(shù)據(jù)(SELECT id,user FROM table WHERE id = 1234)規(guī)范SQL規(guī)范過(guò)濾用戶提交SQL,防止注入杜絕 like %xxx%,不用/少用 like xxx%不用/少用子查詢,改造成連接(JOIN)不用/少用FOR UPDATE、LOCK IN SHARE MODE,防止鎖范圍擴(kuò)大化SQL中不用/少用函數(shù),可能造成額外開(kāi)銷或者導(dǎo)致無(wú)法使用索引分頁(yè)SQL采用內(nèi)連接
8、(INNER JOIN)實(shí)現(xiàn),更高效規(guī)范索引用途快速定位避免排序覆蓋索引可直接返回結(jié)果,無(wú)需掃描數(shù)據(jù)唯一索引可實(shí)現(xiàn)唯一約束規(guī)范索引類型B+ TreeClustered index(InonDB vs MyISAM)Hash index規(guī)范索引類型B+ Tree規(guī)范索引類型Clustered indexInnoDB vs MyISAM規(guī)范索引類型Hash index規(guī)范索引規(guī)范顯式指定自增 int/bigint unsigned not null 作為主鍵不使用外鍵合理利用覆蓋索引,但字段盡量不超過(guò)5個(gè)合理利用最左索引(前綴索引/部分索引)及時(shí)刪除冗余索引選擇適當(dāng)?shù)乃饕樞?,選擇性高條件靠前規(guī)范
9、索引規(guī)范基數(shù)( Cardinality )很低的字段不創(chuàng)建索引(MySQL還不支持 bitmap 索引)采用第三方系統(tǒng)實(shí)現(xiàn)text/blob全文檢索常用排序(ORDER BY)、分組(GROUP BY)、取唯一(DISTINCT)字段上創(chuàng)建索引單表索引數(shù)量不超過(guò)5個(gè)索引字段條件不使用函數(shù)規(guī)范開(kāi)發(fā)環(huán)境啟用log_queries_not_using_indexes設(shè)置long_query_time為最小值定期檢查分析slow log授權(quán)和生產(chǎn)環(huán)境一致關(guān)閉Query Cache設(shè)置較小InnoDB Buffer Pool、key buffer size數(shù)據(jù)量不能太少,否則有些性能問(wèn)題無(wú)法提前規(guī)避規(guī)范
10、行為規(guī)范批量導(dǎo)入、導(dǎo)出數(shù)據(jù)須提前通知DBA,請(qǐng)求協(xié)助觀察推廣活動(dòng)或上線新功能須提前通知DBA,請(qǐng)求壓力評(píng)估不使用SUPER權(quán)限連接數(shù)據(jù)庫(kù)單表多次ALTER操作必須合并為一次操作數(shù)據(jù)庫(kù)DDL及重要SQL及早提交DBA評(píng)審重要業(yè)務(wù)庫(kù)須告知DBA重要等級(jí)、數(shù)據(jù)備份及時(shí)性要求不在業(yè)務(wù)高峰期批量更新、查詢數(shù)據(jù)庫(kù)提交線上DDL需求,所有SQL語(yǔ)句須有備注說(shuō)明優(yōu)化硬件NUMA新架構(gòu),CPU直接存取內(nèi)存,更高效CPU一般不是瓶頸,但MySQL多核支持仍不佳設(shè)備越來(lái)越廉價(jià),大內(nèi)存解決很多問(wèn)題SSD應(yīng)用越來(lái)越廣泛,未來(lái)是主力RAID卡可有效提升IOPS及數(shù)據(jù)安全(RAID 10 vs RAID 5)RAID卡必須
11、配備BBU,設(shè)置FORCE WBFushionIO很NB,但還是貴族優(yōu)化系統(tǒng)升級(jí)到64位/tmp使用/dev/shm的tmpfs內(nèi)核 IO調(diào)度:deadline,noop,反正不要cfq VM管理:vm.swappiness=0文件系統(tǒng):xfs/zfs 全B+樹(shù),高效 分配組,提高并發(fā)度 延遲分配,減少IO mount:nobarrier、data=ordered,writeback優(yōu)化MySQL配置memlockopen_files_limitmax_connectionslong_query_timetable_open_cachekey_buffer_sizequery_cache_sizetmp_table_size/max_heap_table_size優(yōu)化
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復(fù)習(xí)專題十電磁感應(yīng)第3講電磁感應(yīng)定律的綜合應(yīng)用練習(xí)含答案
- 勞務(wù)分包合同價(jià)款確定技巧
- 2023年華僑生聯(lián)考英語(yǔ)作文真題
- 廣東省肇慶市高中英語(yǔ) Unit 4 Astronomy the science of the starsReading教案 新人教版必修3
- 九年級(jí)化學(xué)上冊(cè) 第1單元 步入化學(xué)殿堂 到實(shí)驗(yàn)室去 化學(xué)實(shí)驗(yàn)基本技能訓(xùn)練(一)教案(2)(新版)魯教版
- 2024年一年級(jí)品生下冊(cè)《班級(jí)小公約》教案 未來(lái)版
- 2024年九年級(jí)化學(xué)上冊(cè) 5.1 質(zhì)量守恒定律教案(pdf)(新版)新人教版
- 2024-2025學(xué)年高中物理 第一章 動(dòng)量守恒定律 3 動(dòng)量守恒定律教案 新人教版選擇性必修第一冊(cè)
- 2024年四年級(jí)英語(yǔ)下冊(cè) Unit 8 What Can You Do Lesson 2教案 陜旅版(三起)
- 山東濟(jì)南槐蔭區(qū)2024-2025學(xué)年七年級(jí)數(shù)學(xué)第一學(xué)期期中考試試題(含答案)
- GB/T 4706.114-2024家用和類似用途電器的安全第114部分:飲用水處理裝置的特殊要求
- 第一、二單元復(fù)習(xí)課件 2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史上冊(cè)
- 外包司機(jī)合同范本
- 2.2.2 脊椎動(dòng)物-魚(yú)(第1課時(shí))課件-2024-2025學(xué)年人教版生物七年級(jí)上冊(cè)
- 食品加工機(jī)械 食材凈化清洗設(shè)備 編制說(shuō)明
- 2024年黑龍江省哈爾濱市中考數(shù)學(xué)試卷
- 2024中國(guó)鐵塔集團(tuán)湖南分公司招聘24人高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 2024年保安員資格考試模擬練習(xí)題及答案
- 2024年秋新北師大版一年級(jí)上冊(cè)數(shù)學(xué)教學(xué)課件 4.8 挖紅薯
- (高清版)JT∕T 1402-2022 交通運(yùn)輸行政執(zhí)法基礎(chǔ)裝備配備及技術(shù)要求
- 中華聯(lián)合保險(xiǎn)集團(tuán)股份有限公司行測(cè)筆試題庫(kù)2024
評(píng)論
0/150
提交評(píng)論