數(shù)據(jù)庫優(yōu)化經(jīng)驗(yàn)技巧及注意事項(xiàng)

學(xué)人智庫 時(shí)間:2018-01-12 我要投稿
【clearvueentertainment.com - 學(xué)人智庫】

  數(shù)據(jù)庫優(yōu)化方面的經(jīng)驗(yàn)?用PreparedStatement 一般來說比Statement性能高:一個(gè)sql 發(fā)給服務(wù)器去執(zhí)行,涉及步驟:語法檢查、語義分析,編譯,緩存“inert into user values(1,1,1)”-à二進(jìn)制“inert into user values(2,2,2)”-à二進(jìn)制“inert into user values(?,?,?)”-à二進(jìn)制有外鍵約束會(huì)影響插入和刪除性能,如果程序能夠保證數(shù)據(jù)的完整性,那在設(shè)計(jì)數(shù)據(jù)庫時(shí)就去掉外鍵。(比喻:就好比免檢產(chǎn)品,就是為了提高效率,充分相信產(chǎn)品的制造商)(對于hibernate來說,就應(yīng)該有一個(gè)變化:empleyee->Deptment對象,現(xiàn)在設(shè)計(jì)時(shí)就成了employeeàdeptid)看mysql幫助文檔子查詢章節(jié)的最后部分,例如,根據(jù)掃描的原理,下面的子查詢語句要比第二條關(guān)聯(lián)查詢的效率高:1. select e.name,e.salary where e.managerid=(select id from employee where name='zxx');2. select e.name,e.salary,m.name,m.salary from employees e,employees m wheree.managerid = m.id and m.name='zxx';表中允許適當(dāng)冗余,譬如,主題帖的回復(fù)數(shù)量和最后回復(fù)時(shí)間等將姓名和密碼單獨(dú)從用戶表中獨(dú)立出來。這可以是非常好的一對一的案例喲!sql語句全部大寫,特別是列名和表名都大寫。特別是sql命令的緩存功能,更加需要統(tǒng)一大小寫,sql語句à發(fā)給oracle服務(wù)器à語法檢查和編譯成為內(nèi)部指令à緩存和執(zhí)行指令。根據(jù)緩存的特點(diǎn),不要拼湊條件,而是用?和PreparedStatment還有索引對查詢性能的改進(jìn)也是值得關(guān)注的。備注:下面是關(guān)于性能的討論舉例4航班 3個(gè)城市m*nselect * from flight,city where flight.startcityid=city.cityid and city.name='beijing';m + nselect * from flight where startcityid = (select cityid from city where cityname='beijing');select flight.id,'beijing',flight.flightTime from flight where startcityid = (select cityid from city where cityname='beijing')

  如何完全卸載刪除oracle數(shù)據(jù)庫

  很多朋友只用了oracle的刪除,但很多情況下,他會(huì)發(fā)現(xiàn)重新安裝時(shí),點(diǎn)了下一步安裝界面就消失了,

  往往無奈下只好重裝系統(tǒng),其實(shí)只是你數(shù)據(jù)庫沒刪干凈,刪干凈就不會(huì)出現(xiàn)這種情況了。

  實(shí)現(xiàn)方法:

  1、開始->設(shè)置->控制面板->管理工具->服務(wù)

  停止所有Oracle服務(wù)。

  2、開始->程序->Oracle - OraHome81->Oracle Installation Products->

  Universal Installer

  卸裝所有Oracle產(chǎn)品,但Universal Installer本身不能被刪除

  5、運(yùn)行regedit,選擇HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE,按del鍵刪除這個(gè)入口。

  6、運(yùn)行regedit,選擇HKEY_LOCAL_MACHINE/SYSTEM/Current/ControlSet/Services,滾動(dòng)

  這個(gè)列表,刪除所有Oracle入口。

  7、運(yùn)行refedit,

  HKEY_LOCAL_MACHINE/SYSTEM/Current/ControlSet/Services/Eventlog/Application,

  刪除所有Oracle入口。

  8、開始->設(shè)置->控制面板->系統(tǒng)->高級->環(huán)境變量

  刪除環(huán)境變量CLASSPATH和PATH中有關(guān)Oracle的設(shè)定

  9、從桌面上、STARTUP(啟動(dòng))組、程序菜單中,刪除所有有關(guān)Oracle的組和圖標(biāo)

  10、刪除Program FilesOracle目錄

  11、重新啟動(dòng)計(jì)算機(jī),重起后才能完全刪除Oracle所在目錄

  12、刪除與Oracle有關(guān)的文件,選擇Oracle所在的缺省目錄C:Oracle,刪除這個(gè)入

  口目錄及所有子目錄,并從Windows 2000目錄(一般為C:WINNT)下刪除以下文

  件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。

  13、WIN.INI文件中若有[ORACLE]的標(biāo)記段,刪除該段

  14、如有必要,刪除所有Oracle相關(guān)的ODBC的DSN

  15、到事件查看器中,刪除Oracle相關(guān)的日志

  說明:

  如果有個(gè)別DLL文件無法刪除的情況,則不用理會(huì),重新啟動(dòng),開始新的安裝。安裝時(shí),選擇一個(gè)新的目錄,則,安裝完畢并重新啟動(dòng)后,老的目錄及文件就可以刪除掉了

  使用ADO編程如何判斷一個(gè)數(shù)據(jù)庫是否存在

  (1)、可打開master數(shù)據(jù)庫中一個(gè)叫做SCHEMATA的視圖,其內(nèi)容列出了該服務(wù)器上所有的數(shù)據(jù)庫名稱。

  (2)、更簡便的方法是使用USE語句,成功了就存在;不成功,就不存在。例如:

  try{

  m_pConnect->Execute(_bstr_t("USEINSURANCE_2002"),NULL,

  adCmdText│adExecuteNoRecords);

  catch(_com_error&e)

  blSuccess=FALSE;

  CStringstr="數(shù)據(jù)庫INSURANCE_2002不存在! ";str+=e.Description();::MessageBox(NULL,str,"警告",MB_OK│MB_ICONWARNING);

  收縮SQL數(shù)據(jù)庫

  一般情況下,SQL數(shù)據(jù)庫的收縮并不能很大程度上減小數(shù)據(jù)庫大小,其主要作用是收縮日志大小,應(yīng)當(dāng)定期進(jìn)行此操作以免數(shù)據(jù)庫日志過大

  1、設(shè)置數(shù)據(jù)庫模式為簡單模式:打開SQL企業(yè)管理器,在控制臺(tái)根目錄中依次點(diǎn)開Microsoft SQL Server-->SQL Server組-->雙擊打開你的服務(wù)器-->雙擊打開數(shù)據(jù)庫目錄-->選擇

  你的數(shù)據(jù)庫名稱(如論壇數(shù)據(jù)庫Forum)-->然后點(diǎn)擊右鍵選擇屬性-->選擇選項(xiàng)-->在故障還原的模式中選擇“簡單”,然后按確定保存

  2、在當(dāng)前數(shù)據(jù)庫上點(diǎn)右鍵,看所有任務(wù)中的收縮數(shù)據(jù)庫,一般里面的默認(rèn)設(shè)置不用調(diào)整,直接點(diǎn)確定

  3、收縮數(shù)據(jù)庫完成后,建議將您的數(shù)據(jù)庫屬性重新設(shè)置為標(biāo)準(zhǔn)模式,操作方法同第一點(diǎn),因?yàn)槿罩驹谝恍┊惓G闆r下往往是恢復(fù)數(shù)據(jù)庫的重要依據(jù)

  SQL Server還原數(shù)據(jù)庫

  1、打開SQL企業(yè)管理器,在控制臺(tái)根目錄中依次點(diǎn)開MicrosoftSQLServer

  2、SQLServer組-->雙擊打開你的服務(wù)器-->點(diǎn)圖標(biāo)欄的新建數(shù)據(jù)庫圖標(biāo),新建數(shù)據(jù)庫的名字自行取

  3、點(diǎn)擊新建好的數(shù)據(jù)庫名稱(如論壇數(shù)據(jù)庫Forum)-->然后點(diǎn)上面菜單中的工具-->選擇恢復(fù)數(shù)據(jù)庫

  4、在彈出來的窗口中的還原選項(xiàng)中選擇從設(shè)備-->點(diǎn)選擇設(shè)備-->點(diǎn)添加-->然后選擇你的備份文件名-->添加后點(diǎn)確定返回,這時(shí)候設(shè)備欄應(yīng)該出現(xiàn)您剛才選擇的數(shù)據(jù)庫備份文件名

  ,備份號默認(rèn)為1(如果您對同一個(gè)文件做過多次備份,可以點(diǎn)擊備份號旁邊的查看內(nèi)容,在復(fù)選框中選擇最新的一次備份后點(diǎn)確定)-->然后點(diǎn)擊上方常規(guī)旁邊的選項(xiàng)按鈕

  5、在出現(xiàn)的窗口中選擇在現(xiàn)有數(shù)據(jù)庫上強(qiáng)制還原,以及在恢復(fù)完成狀態(tài)中選擇使數(shù)據(jù)庫可以繼續(xù)運(yùn)行但無法還原其它事務(wù)日志的選項(xiàng)。在窗口的中間部位的將數(shù)據(jù)庫文件還原為這

  里要按照你SQL的安裝進(jìn)行設(shè)置(也可以指定自己的目錄),邏輯文件名不需要改動(dòng),移至物理文件名要根據(jù)你所恢復(fù)的機(jī)器情況做改動(dòng),如您的SQL數(shù)據(jù)庫裝在D:Program

  FilesMicrosoftSQLServerMSSQLData,那么就按照您恢復(fù)機(jī)器的目錄進(jìn)行相關(guān)改動(dòng)改動(dòng),并且最后的文件名最好改成您當(dāng)前的數(shù)據(jù)庫名(如原來是bbs_data.mdf,現(xiàn)在的數(shù)據(jù)

  庫是forum,就改成forum_data.mdf),日志和數(shù)據(jù)文件都要按照這樣的方式做相關(guān)的改動(dòng)(日志的文件名是*_log.ldf結(jié)尾的),這里的恢復(fù)目錄您可以自由設(shè)置,前提是該目錄

  必須存在(如您可以指定d:sqldatabs_data.mdf或者d:sqldatabs_log.ldf),否則恢復(fù)將報(bào)錯(cuò)

  6、修改完成后,點(diǎn)擊下面的確定進(jìn)行恢復(fù),這時(shí)會(huì)出現(xiàn)一個(gè)進(jìn)度條,提示恢復(fù)的進(jìn)度,恢復(fù)完成后系統(tǒng)會(huì)自動(dòng)提示成功,如中間提示報(bào)錯(cuò),請記錄下相關(guān)的錯(cuò)誤內(nèi)容并詢問對SQL

  操作比較熟悉的人員,一般的錯(cuò)誤無非是目錄錯(cuò)誤或者文件名重復(fù)或者文件名錯(cuò)誤或者空間不夠或者數(shù)據(jù)庫正在使用中的錯(cuò)誤,數(shù)據(jù)庫正在使用的錯(cuò)誤您可以嘗試關(guān)閉所有關(guān)于SQL

  窗口然后重新打開進(jìn)行恢復(fù)操作,如果還提示正在使用的錯(cuò)誤可以將SQL服務(wù)停止然后重起看看,至于上述其它的錯(cuò)誤一般都能按照錯(cuò)誤內(nèi)容做相應(yīng)改動(dòng)后即可恢復(fù)

  Sql Server備份數(shù)據(jù)庫

  1、打開SQL企業(yè)管理器,在控制臺(tái)根目錄中依次點(diǎn)開Microsoft SQL Server

  2、SQL Server組-->雙擊打開你的服務(wù)器-->雙擊打開數(shù)據(jù)庫目錄

  3、選擇你的數(shù)據(jù)庫名稱(如論壇數(shù)據(jù)庫Forum)-->然后點(diǎn)上面菜單中的工具-->選擇備份數(shù)據(jù)庫

  4、備份選項(xiàng)選擇完全備份,目的中的備份到如果原來有路徑和名稱則選中名稱點(diǎn)刪除,然后點(diǎn)添加,如果原來沒有路徑和名稱則直接選擇添加,接著指定路徑和文件名,指定后點(diǎn)

  確定返回備份窗口,接著點(diǎn)確定進(jìn)行備份

[數(shù)據(jù)庫優(yōu)化經(jīng)驗(yàn)技巧及注意事項(xiàng)]