日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

高性能网站建设之 MS Sql Server数据库分区

發布時間:2023/12/31 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能网站建设之 MS Sql Server数据库分区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是數據庫分區?
數據庫分區是一種對表的橫向分割,Sql server 2005企業版和之后的Sql server版本才提供這種技術,這種對表的橫向分割不同于2000中的表分割,它對訪問用戶是透明的,用戶并不會感覺的表被橫向分割了。(2000中的表橫向分割是建n個表例如按時間建表每月一個表,表名不同,最后需要做一個大視圖)

關于具體的如何做分區,請參考數據庫分區演練http://www.cnblogs.com/yukaizhao/archive/2008/05/07/sql_partition_test.html

為什么要分區?
顯而易見分區是為了提高數據庫的讀寫性能,提高數據庫的效率;

分區是否總是可以提高效率?
分區是一把雙刃劍,并不總能提高效率,這和具體情況有關系。
之所以有分區技術,分區技術用的好的話可以提高性能,是因為一方面分區把一大塊數據分成了n小塊,這樣查詢的時候很快定位到某一小塊上,在小塊中尋址要快很多;另一方面CPU比磁盤IO快很多倍,而硬件上又有多個磁盤,或者是RAID(廉價磁盤冗余陣列),可以讓數據庫驅動CPU同時去讀寫不同的磁盤,這樣才有可能可以提高效率。
分區在有些時候并不能提高讀寫效率,比如說我們經常看到的按照日期字段去分區MSDN例子,這個實例中是按照記錄的生成時間來分區的,把一年的數據分割成12個分區,每月一個。這樣的分區導致分區并不能實現CPU同步寫并提高寫入性能,因為在同一個時段CPU總是要寫入到最新的那一個分區對應的磁盤中。另一個問題是:這樣分區是否可以提高讀取性能呢?答案是不一定,要看根據什么字段來查詢,如果是根據時間來查詢,根據時間生成報表那么這種分區肯定會提高查詢的效率,但是如果是按照某個客戶查詢客戶最近1年內的賬單數據,這樣數據分布到不同的分區上,這樣的話效率就不一定能提高了,這要看數據在同一個分區上連續分布的讀性能高,還是CPU從幾個磁盤上同步讀取,然后在合并數據的性能更高一些,這和讀取數據的記錄數也有關系。

如何分區?用什么字段做分區依據?
具體如何分區和涉及的業務有關系,要看業務上最經常的寫入和讀取操作是什么,然后再考慮分區的策略。

既然與具體業務相關,我們就假定一個業務環境,假如我們要做一個論壇,對論壇的帖子和回復表進行分區。
論壇中最常見的寫操作是1)發帖 2)回復帖子,
最常見的讀操作是
1)?根據帖子id顯示帖子詳情和分頁的帖子回復
2)?根據帖子版面帖子列表頁根據版面id分頁讀取帖子列表數據
怎么分區更合適呢?現在還沒有準確答案,我有兩種可能的方案,寫下來,大家討論看看。
方案1. 根據帖子ID區域段分區(1-300w一個分區、300w-600w一個分區…),這樣理論上可以提高帖子詳細頁的讀取速度,而對于寫操作性能沒有益處,對于根據版面id讀取帖子列表頁有可能有益
方案2. 根據版面id進行分區,這樣對于寫性能應該有提高,不同的分區對應不同的版面,當有兩個版面同時有發帖回帖操作時,有可能可以并發寫。對于根據版面id獲得帖子列表頁數據也可以提高性能,而對于帖子詳細信息頁沒有性能影響。

多大的數據量才需要分區?
這個問題我只能說一個內部標準,如果一張表的記錄超過在超過1000w,并以每月百萬的數據量增長,那就需要分區。大家有不同的看法請回復討論

關于具體的如何做分區,請參考數據庫分區演練http://www.cnblogs.com/yukaizhao/archive/2008/05/07/sql_partition_test.html

總結

以上是生活随笔為你收集整理的高性能网站建设之 MS Sql Server数据库分区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。