1

當前,我們有我們的Asp mvc LOB Web應用程序與SQL服務器數據庫交談。像往常一樣,這是通過web.config中的連接字符串設置的。指向自定義實用程序的點連接字符串

我們正與我們的一些大客戶正在運行的嗆了起來,導致性能問題,爲用戶的其他數據庫上一些非常大的報告和KPI的性能問題。

我們的解決方案至今在數據庫上設置複製,並通過所有的報告和KPI數據調用關閉到複製服務器,並留下了共同的關鍵用途主要服務器。

沒有添加另一個連接字符串到複製服務器的配置,並通過應用程序並指示報告,kpi和其他只讀調用輔助數據庫有沒有辦法我可以指向web.config連接字符串到一箇中間節點,它將分析數據請求,並將其隨機地分配給相應的分貝?即,如果數據調用是對數據庫的標準更新過程,則它將將其洗牌到主數據庫,並且如果有報告正在加載,則會將其傳遞到輔助複製服務器。

我們只需要將這個節點添加到大數據庫的更大客戶,所以如果我們能夠在當前應用程序設置之外添加一個節點,它將爲我們節省很多代碼更改和測試。

在此先感謝

+0

我只是好奇,什麼是你使用多個連接字符串的猶豫?如果你這樣做了,那麼你的應用代碼可以決定在哪個服務器上查詢。這對我來說很有意義,因爲你的應用程序會最好的知道,但我相信你有你的理由。 – trnelson

+0

感謝您的回覆trnelson。這是一個選項,但我想看看我們是否可以首先在連接字符串級別相交。事實上,大部分客戶沒有這個問題(只有5%左右,但是他們是支付賬單的大公司),如果我能夠在應用程序外部進行這項工作,這將意味着我們不必移動太多在已經測試和穩定的應用程序中。我認爲這會更有彈性,因爲自定義實用程序可以改變說,這個數據集的確定查詢現在應該傳遞給次要的,而不是通過並且全部改變 – Matt

+0

看起來類似於負載的特徵平衡器在這裏會有幫助,但AFAIK SQL Server沒有內置一個。一種可能性是將報告數據源集中到視圖。視圖可以在另一臺服務器上,你甚至可以考慮創建分佈式分區視圖。如果您可以使用模式,您甚至可以在db B/schema X中創建一個視圖來定位db B/schema dbo,然後替代SELECT FROM dbo.Table1用戶寫入SELECT FROM X.Table1 – OzrenTkalcecKrznaric

回答

1

我會說,它可能會更容易爲你添加第二個連接字符串報告等,而不是試圖分析該請求。

的原因如下:

  1. 你可能有一個相當不錯的主意,你的系統的領域需要去第二個數據庫。一旦識別出它們,您可以將它們指向第二個數據庫,而不必擔心來回切換它們。

  2. 你可以在你的配置文件中創建2個連接字符串。如果您只有一個數據庫供較小的客戶使用,則可以將這兩個連接指向同一個數據庫。對於更大的客戶,您可以使用兩個不同的連接字符串。這樣你就可以使系統靈活和可配置。

  3. 分析請求通常被證明是複雜的,這增加額外的複雜性在這種情況下,似乎沒有理由的。

我所有的評論都是基於你所寫的上方,可能不是絕對有效的 - 你知道他們的系統更好,如果你只想使用它們。