《數(shù)據(jù)庫(kù)原理及應(yīng)用》第2版 課件 第13章 數(shù)據(jù)庫(kù)管理及優(yōu)化技術(shù)_第1頁(yè)
《數(shù)據(jù)庫(kù)原理及應(yīng)用》第2版 課件 第13章 數(shù)據(jù)庫(kù)管理及優(yōu)化技術(shù)_第2頁(yè)
《數(shù)據(jù)庫(kù)原理及應(yīng)用》第2版 課件 第13章 數(shù)據(jù)庫(kù)管理及優(yōu)化技術(shù)_第3頁(yè)
《數(shù)據(jù)庫(kù)原理及應(yīng)用》第2版 課件 第13章 數(shù)據(jù)庫(kù)管理及優(yōu)化技術(shù)_第4頁(yè)
《數(shù)據(jù)庫(kù)原理及應(yīng)用》第2版 課件 第13章 數(shù)據(jù)庫(kù)管理及優(yōu)化技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)庫(kù)虛擬教研室制作數(shù)據(jù)庫(kù)《數(shù)據(jù)庫(kù)原理及應(yīng)用》目錄01數(shù)據(jù)庫(kù)故障02數(shù)據(jù)庫(kù)恢復(fù)的實(shí)現(xiàn)技術(shù)03數(shù)據(jù)庫(kù)恢復(fù)策略第13章數(shù)據(jù)庫(kù)管理及優(yōu)化技術(shù)數(shù)據(jù)庫(kù)故障盡管數(shù)據(jù)庫(kù)系統(tǒng)中采取了多種保護(hù)措施來(lái)防止數(shù)據(jù)庫(kù)的安全性和完整性被破壞,保障數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)行,但是故障仍不可避免,影響甚至是破壞數(shù)據(jù)庫(kù),造成數(shù)據(jù)丟失。同時(shí)還存在一些可能因素導(dǎo)致數(shù)據(jù)不一致。從數(shù)據(jù)庫(kù)恢復(fù)的角度,數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行過(guò)程中常見的故障可以分為:事務(wù)故障、系統(tǒng)故障、介質(zhì)故障、計(jì)算機(jī)病毒和人為錯(cuò)誤。數(shù)據(jù)庫(kù)故障事務(wù)故障:意味著事務(wù)沒(méi)有達(dá)到預(yù)期的終點(diǎn)(COMMIT或者ROLLBACK),因此數(shù)據(jù)庫(kù)可能處于不正確狀態(tài)。系統(tǒng)故障:系統(tǒng)故障又稱為軟故障。系統(tǒng)故障是指造成系統(tǒng)停止運(yùn)轉(zhuǎn)的任何事情,使得系統(tǒng)要重新啟動(dòng)。介質(zhì)故障:使存儲(chǔ)在外存上的數(shù)據(jù)部分損失或全部損失,稱為介質(zhì)故障。介質(zhì)故障又稱為硬故障。計(jì)算機(jī)病毒:具有破壞性的、可以自我復(fù)制的計(jì)算機(jī)程序,會(huì)破壞計(jì)算機(jī)的軟件和硬件系統(tǒng)。人為錯(cuò)誤:人為錯(cuò)誤包括管理員或用戶誤操作,如錯(cuò)誤地刪除或修改數(shù)據(jù),或者不恰當(dāng)?shù)呐渲酶?。?shù)據(jù)庫(kù)故障數(shù)據(jù)庫(kù)已被破壞:根本無(wú)法從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),或者數(shù)據(jù)庫(kù)中大部分?jǐn)?shù)據(jù)都有錯(cuò)誤。此時(shí)原有的數(shù)據(jù)庫(kù)已不能使用。某些數(shù)據(jù)可能不正確:這是因?yàn)槭聞?wù)的運(yùn)行被非正常終止造成的。此時(shí)原有的數(shù)據(jù)庫(kù)還能使用,但須改正錯(cuò)誤數(shù)據(jù)。各類故障對(duì)數(shù)據(jù)庫(kù)的影響有兩種可能性:針對(duì)以上各類故障,有效的數(shù)據(jù)庫(kù)管理通常包括定期備份、事務(wù)日志記錄、使用冗余硬件、實(shí)施安全措施以及制定詳細(xì)的災(zāi)難恢復(fù)計(jì)劃。數(shù)據(jù)庫(kù)恢復(fù)概述數(shù)據(jù)庫(kù)恢復(fù)技術(shù)體系旨在通過(guò)精心設(shè)計(jì)數(shù)據(jù)備份、日志記錄與恢復(fù)策略,確保在遭遇不幸事件后,能夠迅速且準(zhǔn)確地重建數(shù)據(jù)庫(kù)至一致狀態(tài),保障業(yè)務(wù)連續(xù)性和數(shù)據(jù)完整性。軟件上,數(shù)據(jù)庫(kù)恢復(fù)技術(shù)的核心是建立冗余數(shù)據(jù)。建立冗余數(shù)據(jù)的方法有數(shù)據(jù)備份和登記日志文件。硬件上,可通過(guò)鏡像(在不同硬件上維護(hù)數(shù)據(jù)庫(kù)的副本)、RAID技術(shù)(磁盤陣列實(shí)現(xiàn)數(shù)據(jù)冗余)和分布式和集群(在多個(gè)節(jié)點(diǎn)間分布數(shù)據(jù)和服務(wù))等技術(shù)實(shí)現(xiàn)備份與恢復(fù)。安全與防護(hù):采用病毒掃描與防護(hù)、入侵檢測(cè)與響應(yīng)等技術(shù),防止數(shù)據(jù)庫(kù)遭到破壞。數(shù)據(jù)庫(kù)備份是指定期將數(shù)據(jù)庫(kù)復(fù)制到另一個(gè)磁盤或其他存儲(chǔ)介質(zhì)上保存起來(lái)的過(guò)程。備用的數(shù)據(jù)稱為后備副本。當(dāng)數(shù)據(jù)庫(kù)遭到破壞后,可以將后備副本重新載入。(1)按備份時(shí)服務(wù)器是否在線分類熱備份:指在數(shù)據(jù)庫(kù)正常在線運(yùn)行的情況下進(jìn)行數(shù)據(jù)備份。冷備份:指在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉的情況下進(jìn)行備份。溫備份:指在數(shù)據(jù)庫(kù)運(yùn)行但不接受用戶訪問(wèn)或僅接受有限訪問(wèn)的情況下進(jìn)行的備份。數(shù)據(jù)庫(kù)備份(2)按備份的內(nèi)容分類物理備份:直接復(fù)制數(shù)據(jù)庫(kù)文件進(jìn)行備份。與邏輯備份相比,其速度快,但占用的存儲(chǔ)空間比較大。邏輯備份:指利用工具從數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)并將其寫入一個(gè)文件。該文件的格式與原數(shù)據(jù)庫(kù)文件格式不同。邏輯備份支持跨平臺(tái)備份。數(shù)據(jù)庫(kù)備份(3)按備份涉及的數(shù)據(jù)范圍分類完整備份:指?jìng)浞菡麄€(gè)數(shù)據(jù)庫(kù)。增量備份:指對(duì)在一次完整備份或上一次增量備份后發(fā)生變化的數(shù)據(jù)進(jìn)行的備份。差異備份:指對(duì)上一次完整備份后發(fā)生變化的數(shù)據(jù)進(jìn)行的備份。與增量備份不同,它始終備份自上次完整備份以來(lái)的所有變化數(shù)據(jù)。1.使用mysqldump命令數(shù)據(jù)備份MySQL數(shù)據(jù)庫(kù)使用mysqldump命令進(jìn)行備份,屬于邏輯備份?;菊Z(yǔ)法格式如下:mysqldump–uusername-hhost–ppassworddatabasename[tablename…]>\目錄\filename.sql數(shù)據(jù)庫(kù)備份(1)備份數(shù)據(jù)表【例1】將數(shù)據(jù)庫(kù)teaching_manage中的所有表備份到d:\backup\all_table.sql。mysqldump-uroot-pteaching_manage>d:\backup\all_table.sql【例2】將數(shù)據(jù)庫(kù)teaching_manage中的student表備份到d:\backup\bk_student.sql。mysqldump-uroot-pteaching_managestudent>d:\backup\bk_student.sql數(shù)據(jù)庫(kù)備份(2)備份數(shù)據(jù)庫(kù)【例3】將數(shù)據(jù)庫(kù)teaching_manage被備份到d:\backup\bk_teaching_manage.sqlmysqldump-uroot-p--databasesteaching_manage>d:\backup\bk_teaching_manage.sql【例4】備份所有數(shù)據(jù)庫(kù)到d:\backup\alldb.sql。mysqldump-uroot-p--all_databases>d:\backup\alldb.sql數(shù)據(jù)庫(kù)備份數(shù)據(jù)庫(kù)恢復(fù)就是讓數(shù)據(jù)庫(kù)根據(jù)備份的數(shù)據(jù)恢復(fù)到備份時(shí)的狀態(tài),也稱為數(shù)據(jù)庫(kù)還原。數(shù)據(jù)庫(kù)恢復(fù)1.使用mysql命令數(shù)據(jù)還原使用mysql命令可以直接執(zhí)行備份文件中的SQL語(yǔ)句,使數(shù)據(jù)庫(kù)還原。數(shù)據(jù)庫(kù)還原的語(yǔ)法格式如下:mysql–uusername–p[databasename]<filename.sql【例6】使用myslq命令和備份文件d:\bk_student.sql還原數(shù)據(jù)庫(kù)。mysql-uroot-pmydb<d:\backup\bk_all.sql數(shù)據(jù)恢復(fù)日志文件在實(shí)際操作中,用戶和管理員不可能隨時(shí)備份數(shù)據(jù),但當(dāng)數(shù)據(jù)丟失時(shí),或者數(shù)據(jù)庫(kù)目錄中的文件損壞時(shí),只能恢復(fù)已經(jīng)備份的文件,而在這之后更新的數(shù)據(jù)就沒(méi)法恢復(fù)了。為了解決這個(gè)問(wèn)題,就必須使用日志文件。日志文件記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作,為了保證數(shù)據(jù)庫(kù)的可恢復(fù)性,撰寫日志文件應(yīng)遵循兩條原則:(1)撰寫的次序嚴(yán)格按照并發(fā)事務(wù)執(zhí)行的時(shí)間次序;(2)應(yīng)先寫日志文件后寫數(shù)據(jù)庫(kù)。常用的日志文件有:錯(cuò)誤日志、二進(jìn)制日志、通用查詢?nèi)罩?、慢查詢?nèi)罩镜热罩疚募﨧ySQL的日志類型MySQL8配置文件my.ini中默認(rèn)的日志設(shè)置如下。日志文件log-output=FILE:這個(gè)配置項(xiàng)指定了MySQL服務(wù)器日志輸出的目的地。在這里設(shè)置為FILE意味著所有的日志都將被寫入到文件中,位置為當(dāng)前../data/;日志文件general-log=0:這一行配置控制是否開啟通用查詢?nèi)罩?。其?表示關(guān)閉,1表示開啟。在這個(gè)例子中,它的值為0,意味著MySQL不會(huì)記錄所有連接和執(zhí)行的SQL語(yǔ)句到通用查詢?nèi)罩局?。這個(gè)設(shè)置可以提高性能,因?yàn)橛涗浰胁樵兪且粋€(gè)資源密集型的操作;general_log_file="WIN102106231722.log":這里設(shè)置的日志文件名為WIN102106231722.log。當(dāng)決定開啟通用日志時(shí),MySQL會(huì)將所有SQL語(yǔ)句記錄到這個(gè)指定的文件中;slow-query-log=1:此配置項(xiàng)控制慢查詢?nèi)罩镜拈_關(guān)。設(shè)置為1意味著MySQL會(huì)記錄執(zhí)行時(shí)間超過(guò)預(yù)設(shè)閾值(默認(rèn)通常是10秒,但可以通過(guò)long_query_time配置來(lái)調(diào)整)的查詢到慢查詢?nèi)罩局?。這對(duì)于識(shí)別和優(yōu)化數(shù)據(jù)庫(kù)中的性能瓶頸非常有幫助。;log-error=“FWD-WIN102106231722.err”:此配置項(xiàng)為開啟錯(cuò)誤日志;Log-bin=“FWD-WIN102106231722-bin”:此配置項(xiàng)為開啟二進(jìn)制日志。--查看二進(jìn)制日志文件是否開啟二進(jìn)制日志文件SHOWVARIABLESLIKE'log_bin%';--查看所有binlog日志列表SHOWBINARYLOGS;--刷新binlog,產(chǎn)生一個(gè)新編號(hào)的binlog日志文件FLUSHLOGS;--重置主服務(wù)器的二進(jìn)制日志,重新建立二進(jìn)制日志文件,編號(hào)從000001開始。RESETMASTER;--查看二進(jìn)制日志內(nèi)容SHOWBINLOGEVENTSIN'WIN102106231722-bin.000001';數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)庫(kù)恢復(fù)技術(shù)是指一組用于保護(hù)數(shù)據(jù)庫(kù)免受各種故障影響,確保數(shù)據(jù)完整性和一致性的技術(shù)。這些技術(shù)旨在使數(shù)據(jù)庫(kù)從故障中快速恢復(fù)到一致的狀態(tài)。以下是幾種常見的數(shù)據(jù)庫(kù)恢復(fù)技術(shù)。(1)備份與恢復(fù):周期性地創(chuàng)建數(shù)據(jù)庫(kù)的備份,當(dāng)數(shù)據(jù)庫(kù)發(fā)生故障時(shí),首先從最近的完整備份恢復(fù)數(shù)據(jù)庫(kù),然后應(yīng)用增量或差異備份以及事務(wù)日志,將數(shù)據(jù)庫(kù)恢復(fù)到故障點(diǎn)的狀態(tài)。(2)重做/撤銷(Redo/Undo):重做(Redo):在系統(tǒng)故障后,將事務(wù)日志中已提交但尚未寫入數(shù)據(jù)庫(kù)的數(shù)據(jù)重新執(zhí)行,以確保事務(wù)的持久性。撤銷(Undo):對(duì)于在故障發(fā)生時(shí)尚未提交的事務(wù)(即未完成的事務(wù)),通過(guò)日志執(zhí)行逆操作來(lái)撤銷其對(duì)數(shù)據(jù)庫(kù)的影響,保證事務(wù)的原子性。數(shù)據(jù)庫(kù)恢復(fù)(3)鏡像與復(fù)制:鏡像:數(shù)據(jù)庫(kù)鏡像是指維持?jǐn)?shù)據(jù)庫(kù)的一個(gè)實(shí)時(shí)、完全相同的副本。一旦主數(shù)據(jù)庫(kù)發(fā)生故障,可立即切換到鏡像數(shù)據(jù)庫(kù),最小化停機(jī)時(shí)間。復(fù)制:數(shù)據(jù)復(fù)制技術(shù)可以創(chuàng)建數(shù)據(jù)庫(kù)的一個(gè)或多份副本,這些副本可以是同步或異步的,根據(jù)復(fù)制策略的不同,可以提供不同級(jí)別的數(shù)據(jù)保護(hù)和可用性。(4)高可用性架構(gòu)集群和分布式系統(tǒng):通過(guò)在多臺(tái)服務(wù)器上分布數(shù)據(jù)庫(kù)服務(wù),實(shí)現(xiàn)負(fù)載均衡和故障轉(zhuǎn)移,確保即使某一部分系統(tǒng)失敗,服務(wù)仍能繼續(xù)運(yùn)行。熱備用:保持一個(gè)或多個(gè)備用服務(wù)器處于待命狀態(tài),它們與主服務(wù)器保持同步,能在主服務(wù)器故障時(shí)迅速接管服務(wù)。1.事務(wù)故障的恢復(fù)事務(wù)故障是指事務(wù)在運(yùn)行至正常終止點(diǎn)前被終止,這時(shí)恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤銷(UNDO)此事務(wù)已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改。事務(wù)故障的恢復(fù)是由系統(tǒng)自動(dòng)完成的,無(wú)需用戶干預(yù)。系統(tǒng)的恢復(fù)步驟如下:(1)反向掃描日志文件,查找該事務(wù)的更新操作。(2)對(duì)該事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫(kù)。如果記錄是插入操作,則做刪除操作(因此時(shí)“更新前的值”為空);若記錄是刪除操作,則作插入操作;若是修改操作,則相當(dāng)于用修改前值代替修改后值。(3)如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)即完成。數(shù)據(jù)庫(kù)恢復(fù)策略2.系統(tǒng)故障的恢復(fù)系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致的原因有兩個(gè):一是未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能已寫入數(shù)據(jù)庫(kù),二是已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū)沒(méi)來(lái)得及寫入數(shù)據(jù)庫(kù)。因此恢復(fù)操作就是要撤銷故障發(fā)生時(shí)未完成的事務(wù),重做已完成的事務(wù)。系統(tǒng)故障的恢復(fù)是由系統(tǒng)在重新啟動(dòng)時(shí)自動(dòng)完成的,不需要用戶干預(yù)。系統(tǒng)的恢復(fù)步驟如下:(1)正向掃描日志文件(即從頭掃描日志文件),找出在故障發(fā)生前已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識(shí)記入重做隊(duì)列(REDO-LIST);同時(shí)找出故障發(fā)生時(shí)尚未完成的事務(wù),將其事務(wù)標(biāo)識(shí)記入撤銷隊(duì)列(UNDO-LIST)。(2)對(duì)撤銷隊(duì)列中的各個(gè)事務(wù)進(jìn)行撤銷(UNDO)處理。(3)對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做(REDO)處理。數(shù)據(jù)庫(kù)恢復(fù)策略3.介質(zhì)故障的恢復(fù)發(fā)生介質(zhì)故障后,磁盤上的物理數(shù)據(jù)和日志文件被破壞,這是最嚴(yán)重的一種故障,其恢復(fù)方法是重裝數(shù)據(jù)庫(kù),然后重做已完成的事務(wù)。備份運(yùn)行事務(wù)故障時(shí)刻重裝后備副本利用日志重新運(yùn)行事務(wù)正常運(yùn)行TaTbTc恢復(fù)數(shù)據(jù)庫(kù)恢復(fù)故障恢復(fù)舉例【例】使用mysqldump完全備份teaching_manage;新建users(uidint,unamevarchar(20))表;在users表中插入兩條記錄;刪除數(shù)據(jù)庫(kù)teaching_manage;要求利用備份文件和二進(jìn)制日志文件恢復(fù)數(shù)據(jù)庫(kù)中的全部數(shù)據(jù)。(1)重置二進(jìn)制日志RESETMASTER;(3)新建users(idint,namevarchar(20))表;查看日志;CREATETABLEusers(idint,namevarchar(20));1.備份數(shù)據(jù)過(guò)程(2)使用mysqldump完全備份teaching_managemysqldump-uroot-p--flush-logs--databasesteaching_manage>d:\backup\bk_teaching_manage.sql(3)在users表是插入全部記錄;INSERTINTOusersVALUES(1,'aaa'),(2,'bbb');(4)誤刪除數(shù)據(jù)庫(kù)teaching_manage;DROPDATABASEteaching_manage;故障恢復(fù)舉例2.恢復(fù)數(shù)據(jù)過(guò)程(2)利用備份文件bk_teaching_manage.sql恢復(fù)數(shù)據(jù)庫(kù);mysql-uroot-p<d:\backup\bk_teaching_manage.sql

(3)利用二進(jìn)制日志文件恢復(fù)所有數(shù)據(jù);mysqlbinlog--stop-position=932

WIN102106231722-bin.000002|mysql-uroot-pteaching_manage(1)刷新日志,將恢復(fù)操作寫入新的日志中FLUSHLOGS;故障恢復(fù)舉例主從復(fù)制數(shù)據(jù)庫(kù)鏡像技術(shù)常常用于要求高可靠性的數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)以雙副本的形式存放在二個(gè)獨(dú)立的磁盤系統(tǒng)中,每個(gè)磁盤系統(tǒng)有各自控制器和CPU,且可以互相自動(dòng)切換。DBMS自動(dòng)利用鏡像磁盤數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù)。主從復(fù)制使用數(shù)據(jù)庫(kù)鏡像技術(shù)建立一個(gè)和主數(shù)據(jù)庫(kù)master完全一樣的數(shù)據(jù)庫(kù)環(huán)境,稱為從數(shù)據(jù)庫(kù)slave;在復(fù)制過(guò)程中,一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而另外一臺(tái)服務(wù)器充當(dāng)從服務(wù)器。主從復(fù)制的基礎(chǔ)是bin-log二進(jìn)制日志文件。一臺(tái)MySQL數(shù)據(jù)庫(kù)作為master,數(shù)據(jù)庫(kù)中所有更新操作都會(huì)記錄在二進(jìn)制日志中;slave數(shù)據(jù)庫(kù)通過(guò)一個(gè)I/O線程與主服務(wù)器保持通信,如果發(fā)現(xiàn)master二進(jìn)制日志文件發(fā)生變化,則會(huì)把變化復(fù)制到自己的中繼日志中;slave的SQL線程會(huì)把相關(guān)的“更新”寫到自己的數(shù)據(jù)庫(kù)中,以此實(shí)現(xiàn)從數(shù)據(jù)庫(kù)和主數(shù)據(jù)庫(kù)的一致性。主從復(fù)制原理高可用性:作為后備數(shù)據(jù)庫(kù),主數(shù)據(jù)庫(kù)master故障后,可切換到從數(shù)據(jù)庫(kù)slave繼續(xù)工作,避免數(shù)據(jù)丟失。提高數(shù)據(jù)庫(kù)的吞吐量:業(yè)務(wù)量越來(lái)越大,I/O訪問(wèn)頻率過(guò)高,單機(jī)無(wú)法滿足,此時(shí)做多庫(kù)的存儲(chǔ),降低磁盤I/O訪問(wèn)的頻率,提高單個(gè)機(jī)器的I/O性能。讀寫分離:使數(shù)據(jù)庫(kù)能支撐更大的并發(fā)。在報(bào)表中尤其重要。由于部分報(bào)表sql語(yǔ)句非常的慢,導(dǎo)致鎖表,影響前臺(tái)服務(wù)。如果前臺(tái)使用master,報(bào)表使用slave,那么報(bào)表sql將不會(huì)造成前臺(tái)鎖,保證了前臺(tái)速度。實(shí)現(xiàn)服務(wù)器負(fù)載均衡:通過(guò)服務(wù)器復(fù)制功能,可以在主服務(wù)器和從服務(wù)器之間實(shí)現(xiàn)負(fù)載均衡。即可以通過(guò)在主服務(wù)器和從服務(wù)器之間切分處理客戶查詢的負(fù)荷,從而得到更好地客戶相應(yīng)時(shí)間。主從復(fù)制的特點(diǎn)分庫(kù)分表分庫(kù):將一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)按照某種規(guī)則分拆到多個(gè)數(shù)據(jù)庫(kù)中,以緩解單服務(wù)器的壓力(CPU、內(nèi)存、磁盤、IO)。分表:將一個(gè)表中的數(shù)據(jù)按照某種規(guī)則分拆到多張表中,降低鎖粒度以及索引樹,提升數(shù)據(jù)查詢效率。分庫(kù)分表垂直拆庫(kù):垂直拆庫(kù)則在垂直拆表的基礎(chǔ)上,將一個(gè)系統(tǒng)中的不同業(yè)務(wù)場(chǎng)景進(jìn)行拆分,比如訂單表、用戶表、商品表。好處:降低單數(shù)據(jù)庫(kù)服務(wù)的壓力(物理存儲(chǔ)、內(nèi)存、IO等)、降低單機(jī)故障的影響面。垂直拆表:即大表拆小表,將一張表中數(shù)據(jù)不同“字段”分拆到多張表中,比如商品庫(kù)將商品基本信息、商品庫(kù)存、賣家信息等分拆到不同庫(kù)表中。

考慮因素有將不常用的,數(shù)據(jù)較大,長(zhǎng)度較長(zhǎng)(比如text類型字段)的拆分到“擴(kuò)展表”,表和表之間通過(guò)“主鍵外鍵”進(jìn)行關(guān)聯(lián)。好處:降低表數(shù)據(jù)規(guī)模,提升查詢效率,也避免查詢時(shí)數(shù)據(jù)量太大造成的“跨頁(yè)”問(wèn)題。分庫(kù)分表水平拆表將數(shù)據(jù)按照某種維度拆分為多張表,但是由于多張表還是從屬于一個(gè)庫(kù),其降低鎖粒度,一定程度提升查詢性能,但是仍然會(huì)有IO性能瓶頸。

水平拆庫(kù)

將數(shù)據(jù)按照某種維度分拆到多個(gè)庫(kù)中,降低單機(jī)單庫(kù)的壓力,提升讀寫性能。表分區(qū)表分區(qū):是指根據(jù)一定規(guī)則,將數(shù)據(jù)庫(kù)中的一張表分解成多個(gè)更小的,容易管理的部分。從邏輯上看,只有一張表,但是底層卻是由多個(gè)物理分區(qū)組成。將表的數(shù)據(jù)均衡到不同的地方,可在特定的SQL操作中減少數(shù)據(jù)讀寫的總量以縮減響應(yīng)時(shí)間,提升查詢效率。

優(yōu)點(diǎn):數(shù)據(jù)管理比較方便,比如要清理或廢棄某年的數(shù)據(jù),就可以直接刪除該日期的分區(qū)數(shù)據(jù)即可;精準(zhǔn)定位分區(qū)查詢數(shù)據(jù),不需要全表掃描查詢,大大提高數(shù)據(jù)檢索效率。

表分區(qū)MySQL支持的表分區(qū)類型(1)RANGE分區(qū):基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。(2)LIST分區(qū):類似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來(lái)進(jìn)行選擇。(3)HASH分區(qū):基于用戶定義的表達(dá)式的返回值來(lái)進(jìn)行分區(qū)。(4)KEY分區(qū):類似于按HASH分區(qū),區(qū)別在于KEY分區(qū)使用系統(tǒng)函數(shù)進(jìn)行分區(qū)。(5)Columns分區(qū):可以直接使用整型、日期型和字符型數(shù)據(jù)進(jìn)行分區(qū)。

表分區(qū)【例】假設(shè)有一個(gè)orders表,用于存儲(chǔ)訂單信息,希望根據(jù)訂單的年份將其分區(qū),以便于管理和查詢特定時(shí)間段內(nèi)的數(shù)據(jù)。CREATETABLEorders(order_idINTNOTNULLAUTO_INCREMENT,customer_idINTNOTNULL,order_dateDATENOTNULL,order_totalDECIMAL(10,2)NOTNULL,PRIMARYKEY(order_id,order_date))PARTITIONBYRANGE(YEAR(order_date))(PARTITIONp_orders_2022VALUESLESSTHAN(

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論