| 導購 | 订阅 | 在线投稿
分享
 
 
 

探討大型項目中的主要問題─數據庫操作

2008-07-11 05:57:47  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
  在大型項目中,我想在困擾大家的主要問題爲數據庫的操作,本人就在項目中遇到了一些問題,在這裏和大家交流下。
  ◆1、 本人項目中有一個複雜視圖,數據量在2千萬以上,每次對這個視圖進行操作時,反映都很慢,而且這個視圖還經常用到,我當時想到的是緩存起來,可是因爲數據量很大,緩存到服務器端是不現實的,我們項目組用到了一種解決方案,把此視圖填充到物理表中,對此物理表設置索引,但是又怕用戶查詢記錄時正好在填充物理表的時候,所以可以設置2個物理表,來回切換,即:第一次填充物理表A,第二次填充物理表B,下次再填充物理表A,如此反複,和.NET的根據時間緩存數據原理類似。大家可能會想到索引視圖,可是索引視圖限制太多,例如:不允許使用outer join 運算;表也不能與他自己連接;不允許進行子查詢;定義索引視圖的SELECT 語句不能包含下列關鍵詞:UNION、TOP、DISTINC、COMPUTE或者HAVING;不能包含通配符,所以不是很不實用。
  ◆2、 不要在數據表中用到自增長字段,因爲再和其它數據庫導insert腳本時,是不能控制自增長列的值的。
  ◆3、 盡量少用外鍵約束,可以靠代碼實現,外鍵約束會使數據庫維護起來相當麻煩,尤其是在大項目中。
 
在大型項目中,我想在困擾大家的主要問題爲數據庫的操作,本人就在項目中遇到了一些問題,在這裏和大家交流下。 ◆1、 本人項目中有一個複雜視圖,數據量在2千萬以上,每次對這個視圖進行操作時,反映都很慢,而且這個視圖還經常用到,我當時想到的是緩存起來,可是因爲數據量很大,緩存到服務器端是不現實的,我們項目組用到了一種解決方案,把此視圖填充到物理表中,對此物理表設置索引,但是又怕用戶查詢記錄時正好在填充物理表的時候,所以可以設置2個物理表,來回切換,即:第一次填充物理表A,第二次填充物理表B,下次再填充物理表A,如此反複,和.NET的根據時間緩存數據原理類似。大家可能會想到索引視圖,可是索引視圖限制太多,例如:不允許使用outer join 運算;表也不能與他自己連接;不允許進行子查詢;定義索引視圖的SELECT 語句不能包含下列關鍵詞:UNION、TOP、DISTINC、COMPUTE或者HAVING;不能包含通配符,所以不是很不實用。 ◆2、 不要在數據表中用到自增長字段,因爲再和其它數據庫導insert腳本時,是不能控制自增長列的值的。 ◆3、 盡量少用外鍵約束,可以靠代碼實現,外鍵約束會使數據庫維護起來相當麻煩,尤其是在大項目中。
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
  免責聲明:本文僅代表作者個人觀點,與王朝網絡無關。王朝網絡登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
© 2005- 王朝網路 版權所有