电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL 性能優(yōu)化,讓數(shù)據(jù)庫(kù)跑的更快

瀏覽:30日期:2023-10-16 18:36:57

MySQL 性能優(yōu)化,讓數(shù)據(jù)庫(kù)跑的更快

在數(shù)據(jù)庫(kù)優(yōu)化工作中,使數(shù)據(jù)盡可能的小,使表在硬盤(pán)上占據(jù)的空間盡可能的小,這是最常用、也是最有效的手段之一。因?yàn)榭s小數(shù)據(jù),相對(duì)來(lái)說(shuō)可以提高硬盤(pán)的讀寫(xiě)速度,并且在查詢過(guò)程中小表的內(nèi)容處理時(shí)所占用的系統(tǒng)資源比較少。同理,如果在比較小的列上設(shè)置索引的話,其索引所占用的資源也會(huì)比較少。那么數(shù)據(jù)庫(kù)管理員該如何給自己的數(shù)據(jù)減肥呢?對(duì)此筆者有如下幾個(gè)建議。

建議一:空值并不一定不占用空間

在這里筆者先給大家掃盲一下。有些數(shù)據(jù)庫(kù)管理員,認(rèn)為空值不會(huì)占用系統(tǒng)資源,其實(shí)這是一個(gè)錯(cuò)誤的認(rèn)識(shí)。他們?cè)跀?shù)據(jù)庫(kù)設(shè)計(jì)時(shí),不喜歡將字段的屬性設(shè)置為NOT NULL。而讓用戶根據(jù)自己的需要來(lái)輸入數(shù)據(jù)。筆者認(rèn)為,這種做法對(duì)于數(shù)據(jù)庫(kù)的性能是不利的。

筆者的意見(jiàn)是,如果有可能的話,盡量將列設(shè)置為NOT NULL,即不允許有空值。這么做的話,可以加快后續(xù)處理的速度,同時(shí)從數(shù)據(jù)存儲(chǔ)來(lái)看還可以使得每列節(jié)省一位,從而達(dá)到數(shù)據(jù)減肥的目的。在實(shí)際工作中,如果有些情況不需要用戶輸入數(shù)據(jù)時(shí),還可以通過(guò)默認(rèn)字段來(lái)達(dá)到非空的目的。如在薪資系統(tǒng)中,可以將用戶的工作年限默認(rèn)設(shè)置為0,而不是空白。當(dāng)然,如果確實(shí)需要NULL的話,也沒(méi)有辦法。但是作為數(shù)據(jù)庫(kù)工程師來(lái)說(shuō),要盡量避免使用NULL值。

建議二:使用盡量小的數(shù)據(jù)類型

數(shù)據(jù)類型的大小也會(huì)影響到基礎(chǔ)表的大小。如對(duì)于MEDIUMINT和INT兩個(gè)數(shù)據(jù)類型,其都可以用來(lái)保存整數(shù)型的數(shù)據(jù),只是其能夠保存的精度不同而已。但是從存儲(chǔ)數(shù)據(jù)的角度來(lái)看,前者所需要的存儲(chǔ)空間要比后者節(jié)省25%左右。為此在能夠使用MEDIUMINT的情況下,就不要使用INT。

另外在定義數(shù)據(jù)長(zhǎng)度的時(shí)候,在滿足需求的情況下,也要盡量的短。如現(xiàn)在薪資考核系統(tǒng)中有員工編碼一個(gè)字段。如果企業(yè)員工編碼已經(jīng)確定,有五位字符構(gòu)成。那么在定義字段時(shí),只需要定義5個(gè)字符的長(zhǎng)度。這不僅可以縮小存儲(chǔ)空間,而且還可以起到一定的數(shù)據(jù)校對(duì)功能。當(dāng)用戶輸入的編碼長(zhǎng)度超過(guò)5位時(shí),數(shù)據(jù)將無(wú)法保存。

雖然說(shuō)保存某個(gè)數(shù)據(jù)可以有很多數(shù)據(jù)類型可以選擇,也可以定義比較大的字符位數(shù)。但是選擇盡量小的數(shù)據(jù)類型,可以幫助降低數(shù)據(jù)存儲(chǔ)空間,達(dá)到數(shù)據(jù)減肥的目的。從而進(jìn)一步提升數(shù)據(jù)庫(kù)的性能。

建議三:索引與數(shù)據(jù)表大小的關(guān)系

筆者在文章一開(kāi)頭就談到過(guò),如果對(duì)于比較小的列設(shè)置索引,那么索引也將占用比較少的資源。可見(jiàn),索引與數(shù)據(jù)表大小也有緊密的聯(lián)系。在合適的地方、合適的時(shí)機(jī)設(shè)置合適的索引,也可以實(shí)現(xiàn)對(duì)數(shù)據(jù)減肥的目的。

如通常情況下,每張數(shù)據(jù)表可能會(huì)有多個(gè)索引,但是主索引往往只有一個(gè)。為此對(duì)于每張表的主索引應(yīng)該考慮盡量的短小精悍。這可以幫助數(shù)據(jù)庫(kù)更快的進(jìn)行識(shí)別。

再如盡量對(duì)前綴進(jìn)行索引。如現(xiàn)在有一張表,需要對(duì)某個(gè)列設(shè)置索引。而這個(gè)列有一個(gè)特點(diǎn),即在頭幾個(gè)字符上有唯一的前綴。如果存在這種情況的話,那么緊緊索引這個(gè)前綴,而不是全部,效果會(huì)更好。在MySQL數(shù)據(jù)庫(kù)中,支持對(duì)一個(gè)字符列的最左邊部分創(chuàng)建一個(gè)索引。這也就是說(shuō),數(shù)據(jù)庫(kù)會(huì)將某個(gè)字段根據(jù)一定的規(guī)則拆分為前后兩個(gè)部分。拆分后前面一部分的數(shù)據(jù)如果能夠保持唯一,那么就只需要對(duì)前面一部分設(shè)置索引即可,而不需要對(duì)整個(gè)字段的數(shù)據(jù)設(shè)置索引。這無(wú)疑可以縮小索引所占用的資源,實(shí)現(xiàn)減肥的目的。更短的索引,能夠提供更快的查詢速度。因?yàn)樗鼈兯加玫挠脖P(pán)空間更少,而且他們將在索引緩存中保存更多的訪問(wèn)。從而降低硬盤(pán)的搜索次數(shù),提高查詢的效率。

最后需要注意的就是,索引不能夠?yàn)E用。使用索引確實(shí)可以提高數(shù)據(jù)的處理能力,但是索引同時(shí)也會(huì)帶來(lái)額外的開(kāi)銷。只有這個(gè)收益大于開(kāi)銷時(shí),使用索引才能夠提升數(shù)據(jù)庫(kù)的性能。否則的話,則會(huì)起到相反的效果。如某個(gè)表需要進(jìn)行快速的存儲(chǔ),如果在這個(gè)表上設(shè)置過(guò)多的索引,索引就會(huì)起到副作用。對(duì)此筆者建議,如果主要通過(guò)搜索列的組合來(lái)存取一個(gè)表,那么最好對(duì)他們只設(shè)置一個(gè)索引。當(dāng)然,這個(gè)索引部分應(yīng)該是日常工作中最常用的列。在不得已的情況下,如果需要使用多個(gè)索引的話,那么最好能夠以更多的副本使用列來(lái)獲得更好的索引壓縮。從而降低因?yàn)槭褂昧硕鄠€(gè)索引而增加的資源消耗。

建議四:在需要“豐滿”的地方還是不能夠節(jié)省

一個(gè)女人,該瘦的地方要瘦,該豐滿的地方要豐滿。其實(shí)數(shù)據(jù)庫(kù)也是如此。能夠節(jié)省硬盤(pán)空間的地方,就要節(jié)省。而不能夠節(jié)省的地方,則不能夠?yàn)榱藴p肥而將其精簡(jiǎn)下來(lái)。有時(shí)候這會(huì)起到適得其反的效果。

筆者以Varchar為例。如在MyISAM標(biāo)中,如果沒(méi)有任何可變長(zhǎng)的列,那么最好使用固定大小的數(shù)據(jù)類型。雖然采用固定長(zhǎng)度的數(shù)據(jù)類型,往往會(huì)浪費(fèi)一定的存儲(chǔ)空間。因?yàn)槿绻脩糨斎氲臄?shù)據(jù)不足,采用固定長(zhǎng)度的話,數(shù)據(jù)存儲(chǔ)時(shí)仍然會(huì)按這個(gè)固定的長(zhǎng)度來(lái)存儲(chǔ)。但是在這種情況下,能夠用固定長(zhǎng)度的,還是要使用固定長(zhǎng)度。因?yàn)檫@種情況下雖然會(huì)浪費(fèi)一定的硬盤(pán)空間,但是卻可以提高數(shù)據(jù)的查詢速度。

可見(jiàn),并不是在任何情況下對(duì)數(shù)據(jù)減肥都可以提高數(shù)據(jù)庫(kù)的性能。這就好像節(jié)支開(kāi)源,這個(gè)節(jié)省要節(jié)省在刀刃上。否則的話,不但不能夠節(jié)支,而且還會(huì)搬起石頭砸自己的腳。通俗的說(shuō),就是該瘦的地方要瘦,該豐滿的地方要豐滿。記住這句話,就對(duì)了。

建議五:將表分割以實(shí)現(xiàn)減肥的目的

螞蟻在搬食物時(shí),如果某塊食物過(guò)大,無(wú)法搬動(dòng)的話,螞蟻則可能會(huì)將這個(gè)塊食物進(jìn)行分割,直到其搬得動(dòng)為止。這就是分蛋糕原理。其實(shí)這種現(xiàn)象在日常工作中經(jīng)常常見(jiàn)。如我們有一張數(shù)據(jù)庫(kù)表格,如果里面的紀(jì)錄非常多,那么表格的允許速度會(huì)非常的慢。在這種情況下,可以根據(jù)一定的規(guī)則將表分為多個(gè)工作簿。如現(xiàn)在有一份企業(yè)員工的考勤信息。對(duì)這個(gè)表進(jìn)行查詢、排序、統(tǒng)計(jì)時(shí),等待時(shí)間非常的長(zhǎng)。此時(shí)就可以根據(jù)部門(mén)將其分割成不同的工作簿,然后再對(duì)其進(jìn)行相關(guān)的數(shù)據(jù)分析。此時(shí)雖然工作量會(huì)大一點(diǎn),但是其處理的速度會(huì)變快許多。

根據(jù)這個(gè)原理,在數(shù)據(jù)庫(kù)優(yōu)化時(shí),可以將一個(gè)經(jīng)常被掃描的大表分割為2個(gè)或者2個(gè)以上的表示非常有益的。如在日常工作中,筆者現(xiàn)在有一個(gè)動(dòng)態(tài)格式的數(shù)據(jù)表,并且這個(gè)數(shù)據(jù)是使用一個(gè)掃描表時(shí),就會(huì)用這個(gè)來(lái)找出相關(guān)行的比較小的靜態(tài)格式的表。

通過(guò)這個(gè)表的拆分,可以將一塊大蛋糕分為幾塊小的蛋糕,以利于后續(xù)數(shù)據(jù)的統(tǒng)計(jì)與分析。當(dāng)然這個(gè)效果的好壞,直接跟這個(gè)拆分的規(guī)則有關(guān)。關(guān)于表如何拆分才能夠達(dá)到理想的效果,這又是一個(gè)比較大的話題。由于這里篇幅有限,筆者不做過(guò)多的說(shuō)明。或許在后續(xù)的文章中,筆者會(huì)以這命題進(jìn)行展開(kāi),給大家做詳細(xì)的說(shuō)明。

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 中药超微粉碎机(中药细胞级微粉碎)-百科 | 电力测功机,电涡流测功机,磁粉制动器,南通远辰曳引机测试台 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 厌氧反应器,IC厌氧反应器,厌氧三相分离器-山东创博环保科技有限公司 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 福建成考网-福建成人高考网 | 培训一点通 - 合肥驾校 - 合肥新亚驾校 - 合肥八一驾校 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 焦作网 WWW.JZRB.COM | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 学习安徽网| 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 |