最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Asp.Net 網站優(yōu)化系列之數據庫優(yōu)化分字訣上 分庫

 更新時間:2010年06月09日 20:23:04   作者:  
當我們的數據量很小的時候,我們會把用戶表,博客表,論壇表,閃存表等等都砸在一個庫里,我們的業(yè)務增長的很好,在不久之后我們盡力的優(yōu)化了查詢,但是效果依然不佳,這時候用分字訣的時機到了。
如果你有先見之明的話,會給表名,存儲過程的名字加上前綴,例如論壇表命名為BBS_xxx,博客表命名為BLOG_xxx;這樣的話在分表處理時會比較容易一些。說到這兒也許你會想到外鍵約束怎么辦,我的博客表,論壇帖子表都有用了User表的主鍵做外鍵呀。這個很容易處理,我們需要當機立斷的刪掉外鍵,這個當機立斷可能會帶來一些麻煩,我們來分析下可能會遇到一些什么問題:

1. 分成多個庫,沒了外鍵了以前的inner join操作要跨庫嗎?

假定場景:博客表有對用戶表的外鍵引用,我們需要在首頁顯示博客列表,博客列表需要顯示用戶名和用戶id的信息

之前用戶表,博客表在一個庫里面的時候我們可以通過外鍵inner join來取得用戶的關聯信息,現在用戶庫和博客庫被拆成了兩個庫,我想對跨庫做inner join說no;為什么呢,因為這不適合擴展,假如有一天我們的業(yè)務量又增長了我們就需要把用戶庫挪到另外一臺機器上,這要導致inner join跨服務器了,這顯然不是一個好辦法,那該怎么辦呢? 我有兩種方案,大家評判好壞:

1)做違反范式的設計,將用戶的不變信息用戶名和用戶id一起存在博客表中,讓用戶名冗余吧,這樣做可以保證取博客數據連帶用戶名時是非常高效率的

2)我們不再從數據庫中取用戶名的信息,改從緩存中取,我們可以在緩存中形成一個最近活躍的用戶數據池,當我們需要用戶名時從這個緩存區(qū)中去取。

目前在我的應用中用的是第一種方案,第二種更有伸縮性,第一種存冗余數據只能存用戶名,有時候只存用戶名就夠了,有時候可能會出現不夠的問題。

2. 如果用到了根據外鍵做的級聯刪除,那這是一個噩夢

對付這個問題,我的方案是修改程序,如果需要級聯刪除,在程序邏輯中完成,不要在數據庫做級聯刪除了,級聯刪除是一種隱含在數據庫中的邏輯,是一種不好的設計方案。

3. 觸發(fā)器也可能帶來和外鍵做級聯刪除同樣的麻煩,同樣的也是修改程序邏輯,代替這種數據庫級別的隱含邏輯。

也許你會說分庫之后一定會帶來性能的提高嗎?這個問題得具體分析,這要看你的服務器性能如何,如果分庫之后數據庫的cpu,io,內存的壓力依然很大;那么您可以將分庫之后的其中某一個庫遷移到另外一臺服務器上,讓兩臺服務器分攤數據訪問的壓力,肯定會提升性能的。

最后說下,分庫分與不分是由數據量、性能要求決定的。下篇分表敬請期待!

相關文章

  • asp.net 開發(fā)的一些常用技巧

    asp.net 開發(fā)的一些常用技巧

    asp.net開發(fā)過程中,發(fā)現的一些不錯技巧,能用的到的朋友有福了。
    2009-07-07
  • asp.net sql存儲過程

    asp.net sql存儲過程

    在ASP.Net項目中使用存儲過程,首先可以提高數據庫的安全性,其次可以提高運行SQL代碼運行的速度,在大型項目中一般是必不可少的。
    2009-11-11
  • 關于兩個自定義控件的取值問題及接口的應用

    關于兩個自定義控件的取值問題及接口的應用

    一個.aspx的頁面中,用到了兩個用戶控件,其中想做的到A控件有一個按鈕,點擊的時候獲取到B控件中的一個textbox的值想必大家會使用findcontrol獲取控件吧,而在生成的時候名字是不確定的,那么如何書寫呢?接下來為您提供詳細的解決方法,感興趣的朋友可以了解下啊
    2013-01-01
  • ASP.net連接Excel的代碼

    ASP.net連接Excel的代碼

    ASP.net連接Excel的代碼,這個是asp.net操作excel必須知道的基礎,另外的技巧可以參考腳本之家之前發(fā)布的文章。
    2010-03-03
  • Request.QueryString與一般NameValueCollection的區(qū)別

    Request.QueryString與一般NameValueCollection的區(qū)別

    最近在做一個搜索程序的優(yōu)化改進,將搜索結果按照查詢的參數不同進行緩存。緩存的Key很自然的就想到了用查詢字符串,而獲取查詢字符串的最簡單方式是通過Request.QueryString.ToString()方法
    2011-12-12
  • .Net之微信小程序獲取用戶UnionID的實現

    .Net之微信小程序獲取用戶UnionID的實現

    這篇文章主要介紹了.Net之微信小程序獲取用戶UnionID的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • ASP.NET MVC下拉框聯動實例解析

    ASP.NET MVC下拉框聯動實例解析

    這篇文章主要為大家詳細介紹了ASP.NET MVC下拉框聯動實現方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 先裝了FRAMEWORK,后裝IIS導致asp.net頁面無法訪問的解決方法

    先裝了FRAMEWORK,后裝IIS導致asp.net頁面無法訪問的解決方法

    如果先裝了FRAMEWORK,后裝IIS。有可能沒有在IIS中注冊,就會導致在頁面中無法訪問的情況
    2012-01-01
  • ASP.net?Core微信平臺開發(fā)配置Token

    ASP.net?Core微信平臺開發(fā)配置Token

    這篇文章主要為大家介紹了ASP.net?Core微信平臺開發(fā)配置Token有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • asp.net 獲取銀行貨幣匯率的代碼

    asp.net 獲取銀行貨幣匯率的代碼

    這個主要公司做外貿的每天都需要更新匯率,本來以前有一個服務可以調用,但是那個連接用不了 所以就寫了一個這樣的東西 套取網頁顯示信息
    2010-12-12

最新評論

合作市| 龙里县| 大荔县| 屏东市| 荃湾区| 夹江县| 崇州市| 全南县| 大港区| 阿图什市| 乌审旗| 台北市| 商都县| 甘泉县| 闵行区| 南郑县| 鄂伦春自治旗| 牡丹江市| 曲水县| 梅河口市| 门头沟区| 衡山县| 黄大仙区| 土默特左旗| 隆化县| 建始县| 尼玛县| 许昌县| 阳谷县| 盐津县| 九江市| 信丰县| 福海县| 平南县| 老河口市| 石门县| 三门县| 桐城市| 旬邑县| 乐安县| 昌黎县|