新聞中心
數(shù)據(jù)儲(chǔ)存和管理在現(xiàn)代業(yè)務(wù)領(lǐng)域非常重要。它們承載著數(shù)以萬計(jì)的組織和個(gè)體的信息、產(chǎn)品和服務(wù)。管理數(shù)據(jù)的一種方法是使用數(shù)據(jù)庫,它是一個(gè)結(jié)構(gòu)化數(shù)據(jù)的,可以通過計(jì)算機(jī)系統(tǒng)訪問和管理。本文將介紹數(shù)據(jù)庫的分類、結(jié)構(gòu)和如何管理和保護(hù)數(shù)據(jù)。

1. 數(shù)據(jù)庫分類
數(shù)據(jù)庫可以根據(jù)其功能和數(shù)據(jù)類型進(jìn)行分類。
1.1. 根據(jù)功能:關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。
關(guān)系型數(shù)據(jù)庫是通過表格將數(shù)據(jù)存儲(chǔ)在具有行和列的二維結(jié)構(gòu)中,表格中的每行代表一個(gè)記錄,每列代表一個(gè)屬性。它們使用 SQL 語言進(jìn)行操作,SQL 結(jié)構(gòu)化查詢語言,是一種標(biāo)準(zhǔn)化語言,廣泛用于查詢、管理和更新數(shù)據(jù)。關(guān)系型數(shù)據(jù)庫能夠確保數(shù)據(jù)的一致性和完整性。一些常見的關(guān)系型數(shù)據(jù)庫軟件包括 MySQL、Oracle、SQL Server 和 PostgreSQL。
非關(guān)系型數(shù)據(jù)庫(NoSQL)是一種用于處理非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫,它使用不同的數(shù)據(jù)模型,而不是傳統(tǒng)的關(guān)系表。這種數(shù)據(jù)庫可以存儲(chǔ) ON、XML、文本和二進(jìn)制數(shù)據(jù)等廣泛的格式。NoSQL 數(shù)據(jù)庫可擴(kuò)展性和可用性強(qiáng)、速度快、易于使用,尤其適用于大型數(shù)據(jù)的存儲(chǔ)和處理。常見的 NoSQL 數(shù)據(jù)庫有 MongoDB、Cassandra 和 Couchbase。
1.2. 根據(jù)數(shù)據(jù)類型:操作數(shù)據(jù)庫、文本數(shù)據(jù)庫、文件數(shù)據(jù)庫和圖形數(shù)據(jù)庫。
操作數(shù)據(jù)庫主要用于數(shù)據(jù)處理,如增加、修改、刪除和查詢數(shù)據(jù)。它們的表之間可以建立關(guān)系,可以進(jìn)行多層查詢。文本數(shù)據(jù)庫是用于存儲(chǔ)和處理文本數(shù)據(jù)的數(shù)據(jù)庫。文件數(shù)據(jù)庫是用于存儲(chǔ)和處理文件數(shù)據(jù)的數(shù)據(jù)庫。而圖形數(shù)據(jù)庫是用于存儲(chǔ)和處理圖形數(shù)據(jù)的數(shù)據(jù)庫。例如,用于社交網(wǎng)絡(luò)的社交圖形數(shù)據(jù)庫,用于產(chǎn)品開發(fā)的三維模型圖形數(shù)據(jù)庫。
2. 數(shù)據(jù)庫結(jié)構(gòu)
數(shù)據(jù)庫可以分為三個(gè)主要部分:
2.1. 邏輯部分
邏輯部分包括規(guī)定數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型的規(guī)則和約束。
數(shù)據(jù)結(jié)構(gòu)指數(shù)據(jù)和數(shù)據(jù)之間的邏輯關(guān)系和組織方式,通常使用表格。具體而言,它會(huì)規(guī)定數(shù)據(jù)在多個(gè)表之間的關(guān)系,并對(duì)不同的字段提供不同的約束。
數(shù)據(jù)類型用于描述數(shù)據(jù)的特性,例如文本、數(shù)字或日期等。這些描述可以用于約束數(shù)據(jù),例如只允許在特定數(shù)據(jù)類型中添加數(shù)據(jù)。
2.2. 物理部分
物理部分由實(shí)際儲(chǔ)存數(shù)據(jù)的磁盤和數(shù)據(jù)文件組成。通常在計(jì)算機(jī)上安裝數(shù)據(jù)庫軟件并設(shè)置文件夾的位置,以便數(shù)據(jù)庫可以通過計(jì)算機(jī)系統(tǒng)進(jìn)行訪問。
2.3. 時(shí)間部分
時(shí)間部分包括控制數(shù)據(jù)訪問的權(quán)限和時(shí)間戳等。
時(shí)間戳是一個(gè)時(shí)間戳,在數(shù)據(jù)庫文件的創(chuàng)建和最后修改時(shí)自動(dòng)添加。時(shí)間戳通常是從 00:00:00 UTC(協(xié)調(diào)世界時(shí))開始到漏秒的分鐘數(shù),被解釋為日期和時(shí)間,用于確定數(shù)據(jù)的最后修改日期和時(shí)間。
3. 數(shù)據(jù)庫管理
管理數(shù)據(jù)庫和其相關(guān)應(yīng)用程序是保護(hù)數(shù)據(jù)完整性和保密性的首要任務(wù)。這包括管理:數(shù)據(jù)操作、用戶權(quán)限、安全性和性能。以下是關(guān)于數(shù)據(jù)庫管理的七個(gè)基本要點(diǎn):
3.1. 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫設(shè)計(jì)是之一步,是確保數(shù)據(jù)庫優(yōu)化和數(shù)據(jù)合適性的關(guān)鍵步驟。正確的設(shè)計(jì)將以正確的結(jié)構(gòu)儲(chǔ)存數(shù)據(jù),保證用適當(dāng)?shù)姆绞皆L問數(shù)據(jù),并在表之間建立適當(dāng)?shù)倪壿嬯P(guān)系。
3.2. 數(shù)據(jù)庫備份和恢復(fù)
備份和恢復(fù)是保護(hù)數(shù)據(jù)的標(biāo)準(zhǔn)方法之一。在進(jìn)行數(shù)據(jù)庫備份之后,數(shù)據(jù)庫將保持最新狀態(tài),可以輕松地恢復(fù)到失敗之前的狀態(tài)。此外,備份存儲(chǔ)在硬盤或云中,避免了單點(diǎn)故障的風(fēng)險(xiǎn)。
3.3. 數(shù)據(jù)庫安全性和訪問控制
數(shù)據(jù)庫的安全和保密性至關(guān)重要,因?yàn)樗鼈冊(cè)谄渲写鎯?chǔ)著組織和個(gè)體的敏感數(shù)據(jù)。為了確保數(shù)據(jù)庫的安全,必須使用正確的權(quán)限、安全協(xié)議以及備份策略。
3.4. 數(shù)據(jù)庫性能
數(shù)據(jù)庫性能可能是用戶體驗(yàn)的關(guān)鍵因素之一。通過使用數(shù)據(jù)庫優(yōu)化技術(shù)、正確的數(shù)據(jù)庫設(shè)計(jì)和實(shí)時(shí)監(jiān)視來控制數(shù)據(jù)庫性能。
3.5. 數(shù)據(jù)庫監(jiān)視
監(jiān)視數(shù)據(jù)庫是確保數(shù)據(jù)安全、查找性能問題和維護(hù)數(shù)據(jù)完整性的重要防線。通過使用數(shù)據(jù)庫監(jiān)視工具,可以了解數(shù)據(jù)庫運(yùn)行情況,監(jiān)控事件和警告,并在問題發(fā)生時(shí)立即采取行動(dòng)。
3.6. 數(shù)據(jù)庫重復(fù)和去重
在數(shù)據(jù)庫中檢測(cè)和清除重復(fù)項(xiàng)是確保數(shù)據(jù)正確且一致的重要步驟。這可以使用數(shù)據(jù)庫存儲(chǔ)過程,查詢和刪除刪除和清除重復(fù)數(shù)據(jù)。
3.7. 數(shù)據(jù)庫故障
在數(shù)據(jù)庫故障發(fā)生時(shí),需要通過修改數(shù)據(jù)庫硬件、安全設(shè)置或進(jìn)行數(shù)據(jù)轉(zhuǎn)移,確定特定的修復(fù)方案。數(shù)據(jù)庫用戶應(yīng)該時(shí)刻保持在數(shù)據(jù)庫故障前的兩個(gè)備份之間,以便迅速恢復(fù)數(shù)據(jù)。
4. 結(jié)論
數(shù)據(jù)庫是幫助組織和個(gè)體管理數(shù)據(jù)的基本工具。熟悉數(shù)據(jù)庫的組織和相關(guān)技術(shù),包括 數(shù)據(jù)庫分類、數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫管理,可以幫助您保護(hù)數(shù)據(jù)的完整性和安全性,使您的業(yè)務(wù)流程更有效和高效。
相關(guān)問題拓展閱讀:
- 影響數(shù)據(jù)庫性能的主要因素有哪些?
影響數(shù)據(jù)庫性能的主要因素有哪些?
以MySQL為例:
影響數(shù)據(jù)庫性能的主要因素總結(jié)如下:
1、sql查詢速度
2、網(wǎng)卡流量
3、服務(wù)器硬件
4、磁盤IO
以上因素并不是時(shí)時(shí)刻刻都會(huì)影響數(shù)據(jù)庫性能,而就像
木桶效應(yīng)
一樣。如果其中一個(gè)因素嚴(yán)重影響性能,那么整個(gè)數(shù)據(jù)庫性能就會(huì)嚴(yán)重受阻。另外,這些影響因素都是相對(duì)的。
例如
:當(dāng)數(shù)據(jù)量并沒有達(dá)到百萬千萬這樣的級(jí)別,那么sql查詢速度也許就不是個(gè)重要因素,換句話說,你的
sql語句
效率適當(dāng)?shù)拖驴赡懿⒉挥绊懻麄€(gè)效率多少,反之,這種情況,無論如何怎么優(yōu)化sql語句,可能都沒有太明顯的效果。
相慧殲關(guān)內(nèi)容拓展:
1、SQL查詢速度
風(fēng)險(xiǎn):效率低下的SQL
2、網(wǎng)卡流量
風(fēng)險(xiǎn):網(wǎng)卡IO被占滿(100Mb/8=100MB)
方案:
①減少從服務(wù)器的數(shù)量。從服務(wù)器都要從主服務(wù)器上復(fù)制日志,所以,從服務(wù)器越多,網(wǎng)絡(luò)流量越大。
②進(jìn)行分級(jí)緩存。伍碧并前方大量緩存突然失效會(huì)對(duì)數(shù)據(jù)庫造成嚴(yán)重的沖擊。
③避免使用“select * ”進(jìn)腔跡行查詢
④分離業(yè)務(wù)網(wǎng)絡(luò)和服務(wù)器網(wǎng)絡(luò)
3、磁盤IO
風(fēng)險(xiǎn):磁盤IO性能突然下降。
方案:使用更好的磁盤設(shè)備解決。
就我的理解,除去硬件原因,軟件的性能提升主要是時(shí)間復(fù)雜性和空間復(fù)雜性這滾亂搭兩方面的優(yōu)化,就時(shí)間復(fù)雜性來說,主要是算法方面的優(yōu)化,也就是程序執(zhí)行大拿邏輯的優(yōu)化,不能說代碼越少程序越高效,代碼少只是減少了你的工作量,對(duì)程序性能方面沒有直接的陪扮影響.舉個(gè)例子,現(xiàn)在用得很多的struts2框架,在后臺(tái)能自動(dòng)幫你封裝頁面參數(shù),可以減少很多的代碼,但這種方式并不比傳統(tǒng)的在后臺(tái)用httpservletrequest.getParameter()方式高效,因?yàn)樗玫椒瓷湟ㄙM(fèi)多一點(diǎn)的時(shí)間;算法精短對(duì)性能也沒直接影響,只能減少你的代碼量,我覺得算法的合理性才是提高軟件性能最重要的原因.
至于空間復(fù)雜度,主要是I/O操作方面的問題,例如數(shù)據(jù)庫操作,主要是sql合不合理,相同的實(shí)現(xiàn)不同的實(shí)現(xiàn)方法的執(zhí)行效率差距是巨大的.
除去這兩個(gè),服務(wù)器和數(shù)據(jù)庫的調(diào)優(yōu)也對(duì)軟件性能起很大的作用.
1、1、調(diào)整數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。這一部分在開發(fā)信息系統(tǒng)之前完成,程序員需要考慮是否使用ORACLE數(shù)據(jù)庫的分區(qū)功能,對(duì)于經(jīng)常訪問的數(shù)據(jù)庫表是否需要建立索引等。
2、2、調(diào)整應(yīng)用程序結(jié)構(gòu)設(shè)計(jì)。這一部分也是在開發(fā)信息系統(tǒng)之前完成,程序員在這一步需要考慮應(yīng)用程序使用什么樣的體系結(jié)構(gòu),是使用傳統(tǒng)的Client/Server兩層體系結(jié)構(gòu),還是使用Browser/Web/Database的三層體系結(jié)構(gòu)。不同的應(yīng)用程序體系結(jié)構(gòu)要求的數(shù)據(jù)庫資源是不同的。
3、3、調(diào)整數(shù)據(jù)庫SQL語句。應(yīng)用程序的執(zhí)行最終將歸結(jié)為數(shù)據(jù)庫中的SQL語句執(zhí)行,因此SQL語句的執(zhí)行效率最終決定了ORACLE數(shù)據(jù)庫的性能。ORACLE公司推薦使用ORACLE語句優(yōu)化銷和段器(Oracle Optimizer)和行鎖管理器(row-level manager)來調(diào)整優(yōu)化SQL語句。
4、4、調(diào)整服務(wù)器內(nèi)存分配。內(nèi)存分配是在信息系統(tǒng)運(yùn)行過程中優(yōu)化配置的,數(shù)據(jù)庫管理員可以根據(jù)數(shù)據(jù)庫運(yùn)行狀況調(diào)整數(shù)據(jù)庫系統(tǒng)全局區(qū)(SGA區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大小;還可以調(diào)整程序全局區(qū)(PGA區(qū))的大小。需要注意的是,SGA區(qū)不是越大越好,SGA區(qū)過大會(huì)占用操作系統(tǒng)使用的內(nèi)存而引起虛擬內(nèi)存的頁面交換,這樣反而會(huì)降低系統(tǒng)。
5、5、調(diào)整硬盤I/O,這一步是在信息系統(tǒng)開發(fā)之前完成的。數(shù)據(jù)庫管理員可以將組成同一個(gè)表空間的數(shù)據(jù)文件放在不同的硬盤上,做到硬盤之間I/O負(fù)載均衡。
6、6、調(diào)整操作系統(tǒng)參數(shù),例如:運(yùn)行在UNIX操作系統(tǒng)上的ORACLE數(shù)據(jù)庫,可以調(diào)整UNIX數(shù)據(jù)緩沖池的大小,每個(gè)進(jìn)程所能使用的內(nèi)存大小等參數(shù)。
實(shí)際上,上述數(shù)據(jù)庫優(yōu)化措施之間是相互聯(lián)系的。ORACLE數(shù)據(jù)庫性能惡化表現(xiàn)基本上都是用戶響應(yīng)時(shí)間比較長(zhǎng),需要用戶長(zhǎng)時(shí)間的等待。但性能惡化的原因卻是多種多樣的,有時(shí)是多個(gè)因素共同造成了性能惡化的結(jié)果,這就需要數(shù)據(jù)庫管理員有比較全面的計(jì)算機(jī)知識(shí),能夠敏感地察覺虧譽(yù)到影響數(shù)據(jù)庫性能的主要原因所在。另外,良好的數(shù)據(jù)庫管理工具對(duì)于優(yōu)化數(shù)據(jù)庫性能也是很重要的。
ORACLE數(shù)據(jù)庫性能優(yōu)化工具
常用的數(shù)據(jù)庫性能優(yōu)化工具有:
1、1、ORACLE數(shù)據(jù)庫在線數(shù)據(jù)字典,ORACLE在線數(shù)據(jù)字典能夠反映出ORACLE動(dòng)態(tài)運(yùn)行情況,對(duì)于調(diào)整數(shù)據(jù)庫性能是很有幫助的。
2、2、操作系統(tǒng)工具,例如UNIX操作系統(tǒng)的vmstat,iostat等命令可以查看到系統(tǒng)系統(tǒng)級(jí)內(nèi)存和硬盤I/O的使用情況,這些工具對(duì)于管理員弄清出系統(tǒng)瓶頸出現(xiàn)在什么地方有時(shí)候很有用。
3、3、SQL語言跟蹤工具(SQL TRACE FACILITY),SQL語言跟蹤工具可以記錄SQL語句的執(zhí)行情況,管理員可以使用虛擬表來調(diào)整實(shí)例,使用SQL語句跟蹤文件調(diào)整應(yīng)用程序性能。SQL語言跟蹤工具將結(jié)果輸出成一個(gè)操作系統(tǒng)的文件,管理員可以使用TKPROF工具查看這些文件。
4、4、ORACLE Enterprise Manager(OEM),這是一個(gè)圖形的用戶管理界面,用戶可以使用它方便地進(jìn)行數(shù)據(jù)庫管理而不必記住復(fù)雜的ORACLE數(shù)據(jù)庫管理的命令。
5、5、EXPLAIN PLAN——SQL語言優(yōu)化命令,使用這個(gè)命令可以幫助程序員寫出高效的SQL語言。
ORACLE數(shù)據(jù)庫的系統(tǒng)性能評(píng)估
信息系統(tǒng)的類型不同,需要關(guān)注的數(shù)據(jù)庫參數(shù)也是不同的。數(shù)據(jù)庫管理員需要根據(jù)自己的信息系統(tǒng)的類型著重考慮不同的棚行數(shù)據(jù)庫參數(shù)。
1、1、在線事務(wù)處理信息系統(tǒng)(OLTP),這種類型的信息系統(tǒng)一般需要有大量的Insert、Update操作,典型的系統(tǒng)包括民航機(jī)票發(fā)售系統(tǒng)、銀行儲(chǔ)蓄系統(tǒng)等。OLTP系統(tǒng)需要保證數(shù)據(jù)庫的并發(fā)性、可靠性和最終用戶的速度,這類系統(tǒng)使用的ORACLE數(shù)據(jù)庫需要主要考慮下述參數(shù):
l l 數(shù)據(jù)庫回滾段是否足夠?
l l 是否需要建立ORACLE數(shù)據(jù)庫索引、聚集、散列?
l l 系統(tǒng)全局區(qū)(SGA)大小是否足夠?
l l SQL語句是否高效?
2、2、數(shù)據(jù)倉庫系統(tǒng)(Data Warehousing),這種信息系統(tǒng)的主要任務(wù)是從ORACLE的海量數(shù)據(jù)中進(jìn)行查詢,得到數(shù)據(jù)之間的某些規(guī)律。數(shù)據(jù)庫管理員需要為這種類型的ORACLE數(shù)據(jù)庫著重考慮下述參數(shù):
l l 是否采用B*-索引或者bitmap索引?
l l 是否采用并行SQL查詢以提高查詢效率?
l l 是否采用PL/SQL函數(shù)編寫存儲(chǔ)過程?
l l 有必要的話,需要建立并行數(shù)據(jù)庫提高數(shù)據(jù)庫的查詢效率
SQL語句的調(diào)整原則
SQL語言是一種靈活的語言,相同的功能可以使用不同的語句來實(shí)現(xiàn),但是語句的執(zhí)行效率是很不相同的。程序員可以使用EXPLAIN PLAN語句來比較各種實(shí)現(xiàn)方案,并選出更優(yōu)的實(shí)現(xiàn)方案??偟脕碇v,程序員寫SQL語句需要滿足考慮如下規(guī)則:
1、1、盡量使用索引。試比較下面兩條SQL語句:
語句A:SELECT dname, deptno FROM dept WHERE deptno NOT IN
(SELECT deptno FROM emp);
語句B:SELECT dname, deptno FROM dept WHERE NOT EXISTS
(SELECT deptno FROM emp WHERE dept.deptno = emp.deptno);
這兩條查詢語句實(shí)現(xiàn)的結(jié)果是相同的,但是執(zhí)行語句A的時(shí)候,ORACLE會(huì)對(duì)整個(gè)emp表進(jìn)行掃描,沒有使用建立在emp表上的deptno索引,執(zhí)行語句B的時(shí)候,由于在子查詢中使用了聯(lián)合查詢,ORACLE只是對(duì)emp表進(jìn)行的部分?jǐn)?shù)據(jù)掃描,并利用了deptno列的索引,所以語句B的效率要比語句A的效率高一些。
2、2、選擇聯(lián)合查詢的聯(lián)合次序??紤]下面的例子:
SELECT stuff FROM taba a, tabb b, tabc c
WHERE a.acol between :alow and :ahigh
AND b.bcol between :blow and :bhigh
AND c.ccol between :clow and :chigh
AND a.key1 = b.key1
AMD a.key2 = c.key2;
這個(gè)SQL例子中,程序員首先需要選擇要查詢的主表,因?yàn)橹鞅硪M(jìn)行整個(gè)表數(shù)據(jù)的掃描,所以主表應(yīng)該數(shù)據(jù)量最小,所以例子中表A的acol列的范圍應(yīng)該比表B和表C相應(yīng)列的范圍小。
3、3、在子查詢中慎重使用IN或者NOT IN語句,使用where (NOT) exists的效果要好的多。
4、4、慎重使用視圖的聯(lián)合查詢,尤其是比較復(fù)雜的視圖之間的聯(lián)合查詢。一般對(duì)視圖的查詢更好都分解為對(duì)數(shù)據(jù)表的直接查詢效果要好一些。
5、5、可以在參數(shù)文件中設(shè)置SHARED_POOL_RESERVED_SIZE參數(shù),這個(gè)參數(shù)在SGA共享池中保留一個(gè)連續(xù)的內(nèi)存空間,連續(xù)的內(nèi)存空間有益于存放大的SQL程序包。
6、6、ORACLE公司提供的DBMS_SHARED_POOL程序可以幫助程序員將某些經(jīng)常使用的存儲(chǔ)過程“釘”在SQL區(qū)中而不被換出內(nèi)存,程序員對(duì)于經(jīng)常使用并且占用內(nèi)存很多的存儲(chǔ)過程“釘”到內(nèi)存中有利于提高最終用戶的響應(yīng)時(shí)間。
CPU參數(shù)的調(diào)整
CPU是服務(wù)器的一項(xiàng)重要資源,服務(wù)器良好的工作狀態(tài)是在工作高峰時(shí)CPU的使用率在90%以上。如果空閑時(shí)間CPU使用率就在90%以上,說明服務(wù)器缺乏CPU資源,如果工作高峰時(shí)CPU使用率仍然很低,說明服務(wù)器CPU資源還比較富余。
使用操作相同命令可以看到CPU的使用情況,一般UNIX操作系統(tǒng)的服務(wù)器,可以使用sar –u命令查看CPU的使用率,NT操作系統(tǒng)的服務(wù)器,可以使用NT的性能管理器來查看CPU的使用率。
數(shù)據(jù)庫管理員可以通過查看v$sysstat數(shù)據(jù)字典中“CPU used by this session”統(tǒng)計(jì)項(xiàng)得知ORACLE數(shù)據(jù)庫使用的CPU時(shí)間,查看“OS User level CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)用戶態(tài)下的CPU時(shí)間,查看“OS System call CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)系統(tǒng)態(tài)下的CPU時(shí)間,操作系統(tǒng)總的CPU時(shí)間就是用戶態(tài)和系統(tǒng)態(tài)時(shí)間之和,如果ORACLE數(shù)據(jù)庫使用的CPU時(shí)間占操作系統(tǒng)總的CPU時(shí)間90%以上,說明服務(wù)器CPU基本上被ORACLE數(shù)據(jù)庫使用著,這是合理,反之,說明服務(wù)器CPU被其它程序占用過多,ORACLE數(shù)據(jù)庫無法得到更多的CPU時(shí)間。
數(shù)據(jù)庫管理員還可以通過查看v$sesstat數(shù)據(jù)字典來獲得當(dāng)前連接ORACLE數(shù)據(jù)庫各個(gè)會(huì)話占用的CPU時(shí)間,從而得知什么會(huì)話耗用服務(wù)器CPU比較多。
出現(xiàn)CPU資源不足的情況是很多的:SQL語句的重解析、低效率的SQL語句、鎖沖突都會(huì)引起CPU資源不足。
1、數(shù)據(jù)庫管理員可以執(zhí)行下述語句來查看SQL語句的解析情況:
SELECT * FROM V$SYSSTAT
WHERE NAME IN
(‘parse time cpu’, ‘parse time elapsed’, ‘parse count (hard)’);
這里parse time cpu是系統(tǒng)服務(wù)時(shí)間,parse time elapsed是響應(yīng)時(shí)間,用戶等待時(shí)間
waite time = parse time elapsed – parse time cpu
由此可以得到用戶SQL語句平均解析等待時(shí)間=waite time / parse count。這個(gè)平均等待時(shí)間應(yīng)該接近于0,如果平均解析等待時(shí)間過長(zhǎng),數(shù)據(jù)庫管理員可以通過下述語句
SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA
ORDER BY PARSE_CALLS;
來發(fā)現(xiàn)是什么SQL語句解析效率比較低。程序員可以優(yōu)化這些語句,或者增加ORACLE參數(shù)SESSION_CACHED_CURSORS的值。
2、數(shù)據(jù)庫管理員還可以通過下述語句:
SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA;
查看低效率的SQL語句,優(yōu)化這些語句也有助于提高CPU的利用率。
3、3、數(shù)據(jù)庫管理員可以通過v$system_event數(shù)據(jù)字典中的“l(fā)atch free”統(tǒng)計(jì)項(xiàng)查看ORACLE數(shù)據(jù)庫的沖突情況,如果沒有沖突的話,latch free查詢出來沒有結(jié)果。如果沖突太大的話,數(shù)據(jù)庫管理員可以降低spin_count參數(shù)值,來消除高的CPU使用率。
內(nèi)存參數(shù)的調(diào)整
內(nèi)存參數(shù)的調(diào)整主要是指ORACLE數(shù)據(jù)庫的系統(tǒng)全局區(qū)(SGA)的調(diào)整。SGA主要由三部分構(gòu)成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。
1、 1、 共享池由兩部分構(gòu)成:共享SQL區(qū)和數(shù)據(jù)字典緩沖區(qū),共享SQL區(qū)是存放用戶SQL命令的區(qū)域,數(shù)據(jù)字典緩沖區(qū)存放數(shù)據(jù)庫運(yùn)行的動(dòng)態(tài)信息。數(shù)據(jù)庫管理員通過執(zhí)行下述語句:
select (sum(pins – reloads)) / sum(pins) “Lib Cache” from v$librarycache;
來查看共享SQL區(qū)的使用率。這個(gè)使用率應(yīng)該在90%以上,否則需要增加共享池的大小。數(shù)據(jù)庫管理員還可以執(zhí)行下述語句:
select (sum(gets – getmisses – usage – fixed)) / sum(gets) “Row Cache” from v$rowcache;
查看數(shù)據(jù)字典緩沖區(qū)的使用率,這個(gè)使用率也應(yīng)該在90%以上,否則需要增加共享池的大小。
2、 2、 數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)庫管理員可以通過下述語句:
SELECT name, value FROM v$sysstat WHERE name IN (‘db block gets’, ‘consistent gets’,’physical reads’);
來查看數(shù)據(jù)庫數(shù)據(jù)緩沖區(qū)的使用情況。查詢出來的結(jié)果可以計(jì)算出來數(shù)據(jù)緩沖區(qū)的使用命中率=1 – ( physical reads / (db block gets + consistent gets) )。
這個(gè)命中率應(yīng)該在90%以上,否則需要增加數(shù)據(jù)緩沖區(qū)的大小。
3、 3、 日志緩沖區(qū)。數(shù)據(jù)庫管理員可以通過執(zhí)行下述語句:
select name,value from v$sysstat where name in (‘redo entries’,’redo log space requests’);查看日志緩沖區(qū)的使用情況。查詢出的結(jié)果可以計(jì)算出日志緩沖區(qū)的申請(qǐng)失敗率:
申請(qǐng)失敗率=requests/entries,申請(qǐng)失敗率應(yīng)該接近于0,否則說明日志緩沖區(qū)開設(shè)太小,需要增加ORACLE數(shù)據(jù)庫的日志緩沖區(qū)。
關(guān)于l數(shù)據(jù)庫總結(jié)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
本文名稱:數(shù)據(jù)庫總結(jié):深入了解數(shù)據(jù)存儲(chǔ)與管理(l數(shù)據(jù)庫總結(jié))
URL鏈接:http://www.dlmjj.cn/article/djopesd.html


咨詢
建站咨詢
