怎樣從客戶端提升SQL Server數(shù)據(jù)庫性能(2)_Mssql數(shù)據(jù)庫教程
推薦:注意SQL Server視圖管理中的四個限制條件通過視圖來訪問數(shù)據(jù),其優(yōu)點是非常明顯的。如可以起到數(shù)據(jù)保密、保證數(shù)據(jù)的邏輯獨立性、簡化查詢操作等等。 但是,話說回來,SQL Server數(shù)據(jù)庫中的視圖并不是萬能的,他跟表這個基本對象還是有重大的區(qū)別。在使用視圖的時候,需要遵守四大限制。 限制條件一
第三:在客戶端采用高速緩存提高服務(wù)器性能。
我們都知道,數(shù)據(jù)庫在設(shè)計的時候,也用到了緩存。緩存是操作系統(tǒng)內(nèi)存中間的一個模塊。因為從內(nèi)存中讀取數(shù)據(jù)要比在硬盤中讀取數(shù)據(jù)要快的多,所以,在數(shù)據(jù)庫中通過把擁護查詢過的數(shù)據(jù)記入到緩存中去,從而可以服務(wù)器的性能。
現(xiàn)在有些程序開發(fā)人員更進一步。在客戶端應(yīng)用程序上,也可以假如緩存�?蛻舳说木彺娓⻊�(wù)器端的緩存有異曲同工之妙。當(dāng)某個用戶查詢了采購定單價格變更記錄的時候,即使用戶關(guān)掉了表,則其查詢的數(shù)據(jù)仍然會在一定時間內(nèi)保存在客戶端的緩存中。當(dāng)用戶下次需要這方面數(shù)據(jù)的時候,則客戶端就不會直接從數(shù)據(jù)庫服務(wù)器從查詢,而是先從客戶端的緩存中找起。只有客戶端應(yīng)用軟件的緩存中沒有這方面信息的時候,才會把語句反饋給服務(wù)器,從服務(wù)器中提取數(shù)據(jù)。通過這種方式,就可以在客戶端上分擔(dān)服務(wù)器的壓力,改善SQL Server數(shù)據(jù)庫的性能。
不過,若在客戶端設(shè)置了高速緩存的話,則最好在應(yīng)用軟件上,增加清除高速緩存的按紐。因為在默寫情況下,我們可能想要知道即使更改的結(jié)果,而不是最后一個看到。如我們在服務(wù)器上,改變了某個金額。但是,由于在客戶端上剛查詢過這方面的數(shù)據(jù),數(shù)據(jù)內(nèi)容還在緩存中。則仍然顯示的是哪個未改過之前的情況。此時,就需要通過“清除高速緩存”的方法來及時的看到改變后的內(nèi)容。
第四:在前臺實現(xiàn)表的完整性約束。
如果在后臺數(shù)據(jù)庫實現(xiàn)表的完整性約束,如某個字段不能為空的話,則需要經(jīng)過很多個步驟。如客戶端程序先把結(jié)果傳遞給表;然后在存儲的時候,發(fā)現(xiàn)某個字段為空,不符合表的完整性約束的要求;數(shù)據(jù)庫拒絕保存這條記錄,并返回錯誤信息;數(shù)據(jù)庫服務(wù)器把這個結(jié)果傳遞給客戶端。很顯然,這種處理機制比較麻煩。那么有沒有什么簡單的解決方法呢?
其實,我們?nèi)敉ㄟ^前臺的客戶端應(yīng)用程序來實現(xiàn)表的完整性約束,可能對數(shù)據(jù)庫的性能更加的有利。如在前臺的客戶端界面中,有某個字段不能為空。此時,我們就可以在前臺應(yīng)用程序開發(fā)的時候,加一限制,當(dāng)這個字段為空的時候,不能保存。在前臺客戶端都不能夠保存的數(shù)據(jù),則當(dāng)然不會傳遞給后臺的數(shù)據(jù)庫服務(wù)器。通過這種在前臺實現(xiàn)表的完整性約束,就可以減少這個處理的過程�?梢员U蟼鬟f給后臺數(shù)據(jù)庫的內(nèi)容都是符合完整性約束的。
另外,就拿默認值來說,也是在客戶端應(yīng)用程序中實現(xiàn)來的便捷。如筆者在數(shù)據(jù)庫開發(fā)的時候,需要有一個記錄創(chuàng)建與更新日期。這兩個字段的話,就可以在為其創(chuàng)建默認日期�,F(xiàn)在的問題就是是在前臺客戶端程序?qū)崿F(xiàn)呢,還是在后臺的數(shù)據(jù)庫中實現(xiàn)限制呢?筆者比較傾向與前臺。因為在前臺,客戶端直接會把當(dāng)前的默認值傳遞給服務(wù)器,服務(wù)器直接保存即可。而不用觸發(fā)服務(wù)器的默認日期的存儲過程。
總之,筆者認為,我們在考慮改善數(shù)據(jù)庫性能的時候,需要客戶端與服務(wù)器端一起努力。或許通過這種方式,可以給我們一些意外的收獲。使用過后,大家可能都會由衷的發(fā)表感嘆,認同筆者的做法。
分享:大內(nèi)存SQL Server數(shù)據(jù)庫的加速劑為數(shù)據(jù)庫配置比較大的內(nèi)存,可以有效提高數(shù)據(jù)庫性能。因為數(shù)據(jù)庫在運行過程中,會在內(nèi)存中劃出一塊區(qū)域來作為數(shù)據(jù)緩存。通常情況下,用戶訪問數(shù)據(jù)庫時,數(shù)據(jù)先會被讀取到這個數(shù)據(jù)緩存中。當(dāng)下次用戶還需要訪問這個數(shù)據(jù)時,就會從這個數(shù)據(jù)緩存中讀
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- SQL參數(shù)化查詢的另一個理由——命中執(zhí)行計劃
- 談SQL Server 2005最后升級:SP3年底發(fā)布
- 測試SQL Server業(yè)務(wù)規(guī)則鏈接方法
- 解析使用 SQL Server 數(shù)據(jù)庫查詢累計值的方法
- 在SQL Server 2008中運用表值參數(shù)(TVP)
- 解析配置SQL SERVER合并復(fù)制(二)建立域用戶
- 怎樣減少SQL Server死鎖發(fā)生的情況
- 如何在SQL Server數(shù)據(jù)庫中拆分字符串函數(shù)
- sql server 2005用戶權(quán)限設(shè)置深入分析
- 怎樣合理設(shè)置內(nèi)存讓數(shù)據(jù)庫與其他程序共存
猜你也喜歡看這些
- MySQL 關(guān)于表復(fù)制 insert into 語法的詳細介紹
- mysql創(chuàng)建函數(shù)出現(xiàn)1418錯誤的解決辦法
- Mysql select in 按id排序?qū)崿F(xiàn)方法
- MySQL 主主同步配置步驟
- 30種mysql優(yōu)化sql語句查詢的方法
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 如何用命令行進入mysql具體操作步驟
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲過程的介紹
- KB967723補丁造成的MYSQL在Win2003上頻繁連接不上
- 通過mysqladmin遠程管理mysql的方法
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-怎樣從客戶端提升SQL Server數(shù)據(jù)庫性能(2)
。