回覆列表
-
1 # 吃了就跑
-
2 # 每日拆解
首先非常感謝在這裡能為你解答這個問題,讓我帶領你們一起走進這個問題,現在讓我們一起探討一下。
隨著網際網路技術的成熟,我們的個人資訊都儲存在資料庫之中,那麼對於程式設計師的我們,對於資料庫的最佳化又是怎樣做到的呢?
一、資料切分
根據切分型別,可以分為兩種方式:垂直(縱向)切分和水平(橫向)切分
接下來給大家慢慢介紹:
1、垂直(縱向)切分
常見有垂直分庫和垂直分表兩種。
垂直分庫就是根據業務耦合性,將關聯度低的不同表儲存在不同的資料庫。
垂直分表是基於資料庫中的“列”進行,某個表字段較多,可以新建一張擴充套件表,將不經常用或欄位長度較大的欄位拆分出去到擴充套件表去。
垂直切分的優點:
①解決業務系統層面的耦合,業務清晰
②與微服務的治理類似,也能對不同業務的資料進行分級管理、維護、監控、擴充套件等。
當然了,任何事物的出現都有兩面性,不足之處就是:
①部分表無法json,只能透過介面聚合方式解決,提升了開發的複雜度。
②分散式事務處理複雜
2、水平(橫向)切分
根據表內資料內在的邏輯關係,將同一個表按不同的條件分散到多個數據庫或多個表中,每個表中只包含一部分資料,從而使得單個表的資料量變小,達到分佈的效果。
水平切分的優點:
①不存在單庫資料量過大、高併發的效能瓶頸,提升系統穩定性和負載能力
②應用端改造較小,不需要拆分業務模組
缺點:
①跨分片的事務一致性難以保證
②跨庫的join關聯查詢效能較差
在以上的分享關於這個問題的解答都是個人的意見與建議,我希望我分享的這個問題的解答能夠幫助到大家。
實驗環境: SQL Server 2000
這個問題涉及到具體的操作步驟,可以引用我一下思路.
按照時間節點去區分:按照銷售流水月分去區分;
在叢集可以利用ISQL 命令,呼叫寫好的指令碼檔案,再進行分表.
總結下: 資料分表,利用前置伺服器或者叢集伺服器作業排程進行自動觸發,按照月份或者自定義時間節點進行分表.
以上是我個人簡介,如有不對地方請指正;最後可以看下我司的效果圖;