新聞中心
在數(shù)字化時代,數(shù)據(jù)量的飛速增長是一件不爭的事實。對于企業(yè)來說,如何存儲這些數(shù)據(jù)成為了一項重要的工作。而現(xiàn)有的傳統(tǒng)數(shù)據(jù)庫往往無法滿足大數(shù)據(jù)存儲的需求。因此,數(shù)據(jù)庫橫向切割應(yīng)運(yùn)而生。本文將詳細(xì)介紹數(shù)據(jù)庫橫向切割技術(shù),并探討其應(yīng)用及優(yōu)勢。

成都創(chuàng)新互聯(lián)專注于施秉網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供施秉營銷型網(wǎng)站建設(shè),施秉網(wǎng)站制作、施秉網(wǎng)頁設(shè)計、施秉網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造施秉網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供施秉網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
一、數(shù)據(jù)庫橫向切割技術(shù)概述
數(shù)據(jù)庫橫向切割,又稱為分表,是將數(shù)據(jù)庫中的數(shù)據(jù)表按照某個維度進(jìn)行水平拆分,以實現(xiàn)大數(shù)據(jù)存儲和高并發(fā)查詢的技術(shù)。所謂水平拆分,即將原有的數(shù)據(jù)表分成若干個子表,每個子表存儲一部分?jǐn)?shù)據(jù),各個子表之間沒有重疊,每個子表的結(jié)構(gòu)和字段都是一樣的。而每個子表存儲的數(shù)據(jù)則依據(jù)表名規(guī)則進(jìn)行分配。例如,可以按照時間、地域、產(chǎn)品、用戶等維度進(jìn)行分表,從而實現(xiàn)數(shù)據(jù)的分布存儲。數(shù)據(jù)庫橫向切割的技術(shù)實現(xiàn)方式主要有兩種:一是基于應(yīng)用程序?qū)崿F(xiàn)的切割,二是基于數(shù)據(jù)庫本身實現(xiàn)的切割。
二、數(shù)據(jù)庫橫向切割技術(shù)應(yīng)用
數(shù)據(jù)庫橫向切割技術(shù)已經(jīng)被廣泛應(yīng)用于大型網(wǎng)站、電商、金融、物流等領(lǐng)域。如淘寶,其主要采用基于時間的橫向切割方式來存儲數(shù)據(jù)。將每天的數(shù)據(jù)存儲在不同的表中,以便進(jìn)行快速查詢和統(tǒng)計。金融領(lǐng)域也是比較典型的應(yīng)用場景,銀行常常要處理數(shù)據(jù)量極大的業(yè)務(wù)數(shù)據(jù),如賬戶信息、交易記錄等。而這些數(shù)據(jù)又需要按照時間、交易類型、客戶等維度進(jìn)行查詢和分析。因此,采用數(shù)據(jù)庫橫向切割技術(shù)來實現(xiàn)高效存儲和快速查詢成為了不二選擇。
三、數(shù)據(jù)庫橫向切割技術(shù)的優(yōu)勢
1.大數(shù)據(jù)存儲: 數(shù)據(jù)庫橫向切割技術(shù)可以將大數(shù)據(jù)拆分為小數(shù)據(jù),從而實現(xiàn)數(shù)據(jù)的分布存儲,降低單機(jī)的存儲壓力。同時,減少單一節(jié)點(diǎn)的數(shù)據(jù)量,提高了數(shù)據(jù)的可用性和可擴(kuò)展性。
2.高并發(fā)查詢: 橫向切割可以將數(shù)據(jù)分散至多個節(jié)點(diǎn),同時表結(jié)構(gòu)和表名規(guī)則一樣,各個節(jié)點(diǎn)之間可以獨(dú)立運(yùn)行,不會造成壓力互相干擾,并能快速查詢和統(tǒng)計數(shù)據(jù),保證系統(tǒng)的高性能和高可用性。
3.災(zāi)備容錯: 采用數(shù)據(jù)庫橫向切割的方式,即使在某一節(jié)點(diǎn)數(shù)據(jù)出現(xiàn)故障的情況下,其它節(jié)點(diǎn)依舊可以正常運(yùn)行,保證了系統(tǒng)的容錯性和可靠性。
四、需要注意的問題
在應(yīng)用數(shù)據(jù)庫橫向切割技術(shù)時,需要注意以下幾個問題:
1.表結(jié)構(gòu)不能改變: 切割后的各個表結(jié)構(gòu)必須相同,否則可能會影響程序的正常運(yùn)行。
2.數(shù)據(jù)一致性: 數(shù)據(jù)庫橫向切割后,各個節(jié)點(diǎn)的數(shù)據(jù)必須保持一致。因此,需要采用一些同步機(jī)制和備份機(jī)制來保證數(shù)據(jù)的一致性和數(shù)據(jù)安全。
3.分頁查詢: 在進(jìn)行分頁查詢時,不同表中的數(shù)據(jù)順序是不確定的,因此需要對數(shù)據(jù)進(jìn)行預(yù)處理和排序。
五、結(jié)論
數(shù)據(jù)庫橫向切割技術(shù)是一種有效的解決海量數(shù)據(jù)存儲和高并發(fā)查詢的方法。通過分布式存儲和查詢,降低了單一節(jié)點(diǎn)的壓力,提高了數(shù)據(jù)的可用性和可擴(kuò)展性,同時保證了系統(tǒng)的高性能和高可用性。不過,在應(yīng)用該技術(shù)時需要注意數(shù)據(jù)一致性、分頁查詢等問題。 在大數(shù)據(jù)時代,采用數(shù)據(jù)庫橫向切割技術(shù),可以讓企業(yè)更好地應(yīng)對海量數(shù)據(jù)的存儲和處理需求,實現(xiàn)數(shù)據(jù)的價值更大化。
相關(guān)問題拓展閱讀:
- mssql數(shù)據(jù)庫在磁盤陣列運(yùn)行慢
- 如何對SQL Server數(shù)據(jù)庫進(jìn)行橫向擴(kuò)展
- mysql數(shù)據(jù)庫表太大查詢慢優(yōu)化的幾種方法
mssql數(shù)據(jù)庫在磁盤陣列運(yùn)行慢
數(shù)據(jù)庫查詢速度慢的原因有很多,常見的有以下幾種:
1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設(shè)計的缺陷)
2、I/O吞吐量小,形成了瓶頸效應(yīng)。
3、沒有創(chuàng)建計算列導(dǎo)致查詢不優(yōu)化。
4、內(nèi)存不足
5、網(wǎng)絡(luò)速度慢
6、查詢出的數(shù)據(jù)量過大(可以采用多次查詢,其他的方法降低數(shù)據(jù)量)
7、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設(shè)計的缺陷)
8、sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。
9、返回了不必要的行和列
10、查詢語句不好,沒有優(yōu)化
●可以通過以下方法來優(yōu)化查詢 :
1、把數(shù)據(jù)、日志、索引放到不同的I/O設(shè)備上,增加讀取速度,以前可以將Tempdb應(yīng)放在RAID0上,SQL2023不在支持。數(shù)據(jù)量(尺寸)越大,提高I/O越重要。
2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)
3、升級硬件
4、根據(jù)查詢條件,建立索引,優(yōu)化索引、優(yōu)化訪問方式,限制結(jié)果集的數(shù)據(jù)量。注意填充因子要適當(dāng)(更好是使用默認(rèn)值0)。索引應(yīng)該盡量小,使用字節(jié)數(shù)小的列建索引好(參照索引的創(chuàng)建),不要對有限的幾個值的字段建單一索引如性別字段。
5、提高網(wǎng)速。
6、擴(kuò)大服務(wù)器的內(nèi)存,Windows 2023和SQL server 2023能支持4-8G的內(nèi)存。
配置虛擬內(nèi)存:虛擬內(nèi)存大小應(yīng)基于計算機(jī)上并發(fā)運(yùn)行的服務(wù)進(jìn)行配置。運(yùn)行 Microsoft SQL Server?
2023時,可考慮將虛擬內(nèi)存大小設(shè)置為計算機(jī)中安裝的物理內(nèi)存的1.5倍。如果另外安裝了全文檢索功能,并打算運(yùn)行Microsoft搜索服務(wù)以便執(zhí)行
全文索引和查詢,可考慮:將虛擬內(nèi)存大小配置為至少是計算機(jī)中安裝的物理內(nèi)存的3倍。將SQL Server max server
memory服務(wù)器配置選項配置為物理內(nèi)存的1.5倍(虛擬內(nèi)存大小設(shè)置的一半)。
7、增加服務(wù)器CPU個數(shù);但是必須
明白并行處理串行處理更需要資源例如內(nèi)存。使用并行還是串行程是MsSQL自動評估選擇的。單個任務(wù)分解成多個任務(wù),就可以在處理器上運(yùn)行。例如耽擱查詢
的排序、連接、掃描和GROUP BY字句同時執(zhí)行,SQL
SERVER根據(jù)系統(tǒng)的負(fù)載情況決定更優(yōu)的并行等級,復(fù)雜的需要消耗大量的CPU的查詢最適合并行處理。但是更新操作UPDATE,INSERT,
DELETE還不能并行處理。
8、如果是使用like進(jìn)行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like ”a%” 使用索引 like
”%a” 不使用索引用 like ”%a%”
查詢時,查詢耗時和字段值總長度成正比,所以不能用CHAR類型,而是VARCHAR。對于字段的值很長的建全文索引。
9、DB Server 和APPLication Server 分離;OLTP和OLAP分離
10、分布式分區(qū)視圖可用于實現(xiàn)數(shù)據(jù)庫服務(wù)器聯(lián)合體。
聯(lián)合體是一組分開管理的服務(wù)器,但它們相互協(xié)作分擔(dān)系統(tǒng)的處理負(fù)荷。這種通過分區(qū)數(shù)據(jù)形成數(shù)據(jù)庫服務(wù)器聯(lián)合體的機(jī)制能夠擴(kuò)大一組服務(wù)器,以支持大型的多層 Web 站點(diǎn)的處理需要。有關(guān)更多信息,參見設(shè)計聯(lián)合數(shù)據(jù)庫服務(wù)器。(參照SQL幫助文件”分區(qū)視圖”)
a、在實現(xiàn)分區(qū)視圖之前,必須先水平分區(qū)表
b、
在創(chuàng)建成員表后,在每個成員服務(wù)器上定義一個分布式分區(qū)視圖,并且每個視圖具有相同的名稱。這樣,引用分布式分區(qū)視圖名的查詢可以在任何一個成員服務(wù)器上
運(yùn)行。系統(tǒng)操作如同每個成員服務(wù)器上都有一個原始表的復(fù)本一樣,但其實每個服務(wù)器上只有一個成員表和一個分布式分區(qū)視圖。數(shù)據(jù)的位置對應(yīng)用程序是透明的。
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收縮數(shù)據(jù)和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 設(shè)置自動收縮日志.對于大的數(shù)據(jù)庫不要設(shè)置數(shù)據(jù)庫自動增長,它會降低服務(wù)器的性能。
在T-sql的寫法上有很大的講究,下面列出常見的要點(diǎn):首先,DBMS處理查詢計劃的過程是這樣的:
1、 查詢語句的詞法、語法檢查
2、 將語句提交給DBMS的查詢優(yōu)化器
3、 優(yōu)化器做代數(shù)優(yōu)化和存取路徑的優(yōu)化
4、 由預(yù)編譯模塊生成查詢規(guī)劃
5、 然后在合適的時間提交給系統(tǒng)處理執(zhí)行
6、 最后將執(zhí)行結(jié)果返回給用戶。
其次,看一下SQL SERVER的數(shù)據(jù)存放的結(jié)構(gòu):一個頁面的大小為8K(8060)字節(jié),8個頁面為一個盤區(qū),按照B樹存放。
12、 Commit和rollback的區(qū)別 Rollback:回滾所有的事物。 Commit:提交當(dāng)前的事物.
沒有必要在動態(tài)SQL里寫事物,如果要寫請寫在外面如: begin tran exec(@s) commit trans 或者將動態(tài)SQL
寫成函數(shù)或者存儲過程。
13、在查詢Select語句中用Where字句限制返回的行數(shù),避免表掃描,如果返回不必要的數(shù)據(jù),浪費(fèi)了服務(wù)器的I/O資源,加重了網(wǎng)絡(luò)的負(fù)擔(dān)降低性能。如果表很大,在表掃描的期間將表鎖住,禁止其他的聯(lián)接訪問表,后果嚴(yán)重。
14、SQL的注釋申明對執(zhí)行沒有任何影響
15、盡可能不使用光標(biāo),它占用大量的資源。如果需要row-by-row地執(zhí)行,盡量采用非光標(biāo)技術(shù),如:在客戶端循環(huán),用臨時表,Table變量,用子查詢,用Case語句等等。
游標(biāo)可以按照它所支持的提取選項進(jìn)行分類:只進(jìn)必須按照從之一行到最后一行的順序提取行。FETCH NEXT 是唯一允許的提取操作,也是默認(rèn)方式??蓾L動性可以在游標(biāo)中任何地方隨機(jī)提取任意行。游標(biāo)的技術(shù)在SQL2023下變得功能很強(qiáng)大,他的目的是支持循環(huán)。
有四個并發(fā)選項 READ_ON:不允許通過游標(biāo)定位更新(Update),且在組成結(jié)果集的行中沒有鎖。
OPTIMISTIC WITH
valueS:樂觀并發(fā)控制是事務(wù)控制理論的一個標(biāo)準(zhǔn)部分。樂觀并發(fā)控制用于這樣的情形,即在打開游標(biāo)及更新行的間隔中,只有很小的機(jī)會讓第二個用戶更新
某一行。當(dāng)某個游標(biāo)以此選項打開時,沒有鎖控制其中的行,這將有助于更大化其處理能力。如果用戶試圖修改某一行,則此行的當(dāng)前值會與最后一次提取此行時獲
取的值進(jìn)行比較。如果任何值發(fā)生改變,則服務(wù)器就會知道其他人已更新了此行,并會返回一個錯誤。如果值是一樣的,服務(wù)器就執(zhí)行修改。
選擇這個并發(fā)選項OPTIMISTIC WITH ROW
VERSIONING:此樂觀并發(fā)控制選項基于行版本控制。使用行版本控制,其中的表必須具有某種版本標(biāo)識符,服務(wù)器可用它來確定該行在讀入游標(biāo)后是否有
所更改。在SQL Server中,這個性能由timestamp數(shù)據(jù)類型提供,它是一個二進(jìn)制數(shù)字,表示數(shù)據(jù)庫中更改的相對順序。
每個數(shù)據(jù)庫都有一個全局當(dāng)前時間戳值:@@DS。每次以任何方式更改帶有 timestamp 列的行時,SQL Server
先在時間戳列中存儲當(dāng)前的 @@DS 值,然后增加 @@DS 的值。如果某 個表具有 timestamp
列,則時間戳?xí)挥浀叫屑墶7?wù)器就可以比較某行的當(dāng)前時間戳值和上次提取時所存儲的時間戳值,從而確定該行是否已更新。服務(wù)器不必比較所有列的值,只需
比較 timestamp 列即可。如果應(yīng)用程序?qū)]有 timestamp
列的表要求基于行版本控制的樂觀并發(fā),則游標(biāo)默認(rèn)為基于數(shù)值的樂觀并發(fā)控制。 SCROLL LOCKS
這個選項實現(xiàn)悲觀并發(fā)控制。在悲觀并發(fā)控制中,在把數(shù)據(jù)庫的行讀入游標(biāo)結(jié)果集時,應(yīng)用程序?qū)⒃噲D鎖定數(shù)據(jù)庫行。在使用服務(wù)器游標(biāo)時,將行讀入游標(biāo)時會在其
上放置一個更新鎖。如果在事務(wù)內(nèi)打開游標(biāo),則該事務(wù)更新鎖將一直保持到事務(wù)被提交或回滾;當(dāng)提取下一行時,將除去游標(biāo)鎖。如果在事務(wù)外打開游標(biāo),則提取下
一行時,鎖就被丟棄。
因此,每當(dāng)用戶需要完全的悲觀并發(fā)控制時,游標(biāo)都應(yīng)在事務(wù)內(nèi)打開。更新鎖將阻止任何其它任務(wù)獲取更新鎖或排它鎖,從而阻止其它任務(wù)更
新該行。然而,更新鎖并不阻止共享鎖,所以它不會阻止其它任務(wù)讀取行,除非第二個任務(wù)也在要求帶更新鎖的讀取。滾動鎖根據(jù)在游標(biāo)定義的 SELECT
語句中指定的鎖提示,這些游標(biāo)并發(fā)選項可以生成滾動鎖。滾動鎖在提取時在每行上獲取,并保持到下次提取或者游標(biāo)關(guān)閉,以先發(fā)生者為準(zhǔn)。下次提取時,服務(wù)器
為新提取中的行獲取滾動鎖,并釋放上次提取中行的滾動鎖。滾動鎖獨(dú)立于事務(wù)鎖,并可以保持到一個提交或回滾操作之后。如果提交時關(guān)閉游標(biāo)的選項為關(guān),則
COMMIT語句并不關(guān)閉任何打開的游標(biāo),而且滾動鎖被保留到提交之后,以維護(hù)對所提取數(shù)據(jù)的隔離。所獲取滾動鎖的類型取決于游標(biāo)并發(fā)選項和游標(biāo)
SELECT 語句中的鎖提示。鎖提示 只讀樂觀數(shù)值
*指定 NOLOCK 提示將使指定了該提示的表在游標(biāo)內(nèi)是只讀的。
16、用Profiler來跟蹤查詢,得到查詢所需的時間,找出SQL的問題所在;用索引優(yōu)化器優(yōu)化索引
17、注意UNion和UNion all 的區(qū)別。UNION all好
18、注意使用DISTINCT,在沒有必要時不要用,它同UNION一樣會使查詢變慢。重復(fù)的記錄在查詢里是沒有問題的
19、查詢時不要返回不需要的行、列
20、 用sp_configure ”query governor cost limit”或者SET
QUERY_GOVERNOR_COST_LIMIT來限制查詢消耗的資源。當(dāng)評估查詢消耗的資源超出限制時,服務(wù)器自動取消查詢,在查詢之前就扼殺掉。
SET LOCKTIME設(shè)置鎖的時間
21、用select top 100 / 10 Percent 來限制用戶返回的行數(shù)或者SET ROWCOUNT來限制操作的行
22、 在SQL2023以前,一般不要用如下的字句: “IS NULL”, “”, “!=”, “!>”,
“!”等還是不能優(yōu)化,用不到索引。
23、使用Query Analyzer,查看SQL語句的查詢計劃和評估分析是否是優(yōu)化的SQL。一般的20%的代碼占據(jù)了80%的資源,我們優(yōu)化的重點(diǎn)是這些慢的地方。
24、如果使用了IN或者OR等時發(fā)現(xiàn)查詢沒有走索引,使用顯示申明指定索引: SELECT * FROM PersonMember (INDEX = IX_Title) WHERE processid IN (‘男’,‘女’)
25、將需要查詢的結(jié)果預(yù)先計算好放在表中,查詢的時候再SELECT。這在SQL7.0以前是最重要的手段。例如醫(yī)院的住院費(fèi)計算。
26、MIN() 和 MAX()能使用到合適的索引。
27、 數(shù)據(jù)庫有一個原則是代碼離數(shù)據(jù)越近越好,所以優(yōu)先選擇Default,依次為Rules,Triggers,
Constraint(約束如外健主健CheckUNIQUE……,數(shù)據(jù)類型的更大長度等等都是約束),Procedure.這樣不僅維護(hù)工作小,編寫程
序質(zhì)量高,并且執(zhí)行的速度快。
28、如果要插入大的二進(jìn)制值到Image列,使用存儲過程,千萬不要用內(nèi)嵌INsert來插入(不知JAVA
是否)。因為這樣應(yīng)用程序首先將二進(jìn)制值轉(zhuǎn)換成字符串(尺寸是它的兩倍),服務(wù)器受到字符后又將他轉(zhuǎn)換成二進(jìn)制值.存儲過程就沒有這些動作:
方法:Create procedure p_insert as insert into table(Fimage) values
(@image), 在前臺調(diào)用這個存儲過程傳入二進(jìn)制參數(shù),這樣處理速度明顯改善。
有很多原因啊…系統(tǒng)檢查下..數(shù)據(jù)庫配置檢查下..網(wǎng)絡(luò)也有肯能是問題.
如何對SQL Server數(shù)據(jù)庫進(jìn)行橫向擴(kuò)展
一般人們會選擇縱向擴(kuò)展(scale up)SQL Server數(shù)據(jù)庫,而非橫向擴(kuò)展(scale out)??v向擴(kuò)展很容易:增加硬件、處理能力、內(nèi)存、磁盤和提高網(wǎng)絡(luò)速度。其原理就是仍然在一臺服務(wù)器上運(yùn)行數(shù)據(jù)庫,但是增加了服務(wù)器的處理能力和資源。這種方法很昂貴,但是非常簡單直接。
采用云技術(shù)
有時候,最簡單的方法就是將問題交由其他人處理。微軟的Windows Azure云服務(wù)包含一個基于云的SQL Server版本SQL Azure.這在技術(shù)上并非真正意義的橫向擴(kuò)展,因為它是一種無限縱向擴(kuò)展方法。所以,轉(zhuǎn)移到Azure并不需要對您的應(yīng)用程序進(jìn)行大改動。實際上,您只需要將應(yīng)用程序遷移到SQL Azure,然后支付存儲、處理和數(shù)據(jù)傳輸費(fèi)用。這些都是收費(fèi)服務(wù),但是您不需要再擔(dān)心擴(kuò)展問題。
復(fù)制
SQL Server原生復(fù)制是一種支持橫向擴(kuò)展的解決方案,與數(shù)據(jù)庫的創(chuàng)建和使用方式有關(guān)。您只需要在多臺服務(wù)器上復(fù)制多個數(shù)據(jù)庫副本,然后將不同的用戶指向各臺服務(wù)器。這種方法通常最適合支持地理位置分散的用戶,如亞洲辦公室的用戶使用服務(wù)器1,而北美辦公室的用戶則使用服務(wù)器2.每一臺服務(wù)器都擁有完整的數(shù)據(jù)副本,并且會復(fù)制伙伴服務(wù)器的所有修改。
這種方法不支持自動負(fù)載均衡,并且最適合用在用戶固定只使用一部分?jǐn)?shù)據(jù)的情況。換而言之,如果亞洲用戶只需要編輯與他們辦公室相關(guān)的數(shù)據(jù)–例如,主要是亞洲客戶的信息,那么復(fù)制能夠保證其他數(shù)據(jù)庫副本也包含這些記錄的副本。如果所有用戶都需要編輯完整的數(shù)據(jù)集,那么復(fù)制就變得有一些復(fù)雜,因為SQL Server必須在支持用戶的同時,編輯位于不同服務(wù)器的同一個數(shù)據(jù)。
SQL Server的合并復(fù)制能夠處理這種沖突,但是您必須進(jìn)行一些自定義合并編程,這意味著您的開發(fā)人員必須開發(fā)一些算法,確定用戶并發(fā)訪問數(shù)據(jù)時誰獲取編輯權(quán)限??蛻魬?yīng)用程序也需要增加編程;使它們不僅向數(shù)據(jù)庫提交數(shù)據(jù)修改,也要循環(huán)檢查這些修改是否被其他并發(fā)用戶重寫。用戶也需要重新培訓(xùn),因為客戶端應(yīng)用程序可能會提示:”您正在編程的數(shù)據(jù)已經(jīng)發(fā)生變化。您需要重新檢查,確定您的編輯是否仍然有效?!?/p>
聯(lián)合數(shù)據(jù)庫
另一個重要的橫向擴(kuò)展方法是聯(lián)合。通過這種方法,您可以將數(shù)據(jù)庫劃分到多臺服務(wù)器上。垂直分割將同一個表的不同行保存到不同的服務(wù)器上。同時,地理分區(qū)是最常用的方法:將所有亞洲數(shù)據(jù)記錄保存在一臺服務(wù)器上,而所有歐洲數(shù)據(jù)則保存在另一臺服務(wù)器上。這種方法不同于整體復(fù)制:每一個位置的服務(wù)器都不具備完整的數(shù)據(jù)庫,而只擁有該位置的數(shù)據(jù)。通過實現(xiàn)一種SQL Server分布式分區(qū)視圖而形成完整的表,用戶就可以瀏覽一個”聯(lián)合”或組合的數(shù)據(jù)視圖。水平分割則將表的字段保存在不同的服務(wù)器上,因此各臺服務(wù)器一起協(xié)作構(gòu)成組合的表。
這些數(shù)據(jù)庫的創(chuàng)建并不簡單,其中涉及一種整體操作。您需要掌握關(guān)于數(shù)據(jù)訪問和使用的詳細(xì)信息,才能夠?qū)崿F(xiàn)正確的部署。此外,您還需要一位SQL Server數(shù)據(jù)庫架構(gòu)師,他應(yīng)該全面理解這些技術(shù),分析您的業(yè)務(wù)情況,并且能夠正確地創(chuàng)建這些組件。
在一些情況中,實現(xiàn)這種橫向擴(kuò)展對客戶端應(yīng)用程序的改動很小。對于本身在設(shè)計上大量使用視圖和存儲過程進(jìn)行數(shù)據(jù)訪問的應(yīng)用程序,更是如此。因為這些元素只是是在后臺抽象,在客戶端上不會發(fā)生變化。但是,這些應(yīng)用程序并不常見;通常,實現(xiàn)橫向擴(kuò)展都需要修改客戶端程序,使客戶端與后臺結(jié)構(gòu)分離。
橫向擴(kuò)展并不簡單
毫無疑問,實現(xiàn)SQL Server橫向擴(kuò)展非常復(fù)雜–這也是Azure等云數(shù)據(jù)庫系統(tǒng)流行的原因之一。此外,有一些第三方供應(yīng)商能夠幫助實現(xiàn)橫向擴(kuò)展技術(shù),而不需要完全依賴SQL Server的原生特性。您需要自己下功夫了解這些方法,理解數(shù)據(jù)訪問和使用方法,這樣才能夠選擇更符合您要求的方法。
mysql數(shù)據(jù)庫表太大查詢慢優(yōu)化的幾種方法
優(yōu)化方案:
主從同步+讀寫分離:
這個表在有設(shè)備條件的情況下,讀寫分離,這樣能減少很多壓力,而且數(shù)據(jù)穩(wěn)定性也能提高
縱滲前槐向分表:
根據(jù)原則,每個表最多不要超過5個索引,縱向拆分字段,將部分字段拆到一個新表
通常我們按以下原則進(jìn)行垂直拆分:(先區(qū)分這個表中的冷熱數(shù)據(jù)字段)
把不常用的字段單獨(dú)放在一張表;
把text,blob等大字段拆分出來放在悔坦附表中;
經(jīng)常組合查詢的列放在一張表中;
缺點(diǎn)是:很多邏輯需要重寫,帶來很大的工作量。
利用表分區(qū):
這個是推薦的一個解決方案,不會帶來重寫邏輯等,可以根據(jù)時間來進(jìn)行表分區(qū),相當(dāng)于在同一個磁盤上,表的數(shù)據(jù)存在不同的文件夾內(nèi),能夠極大的提高查詢速度。
橫向分表:
1000W條數(shù)據(jù)不少的,會帶來一些運(yùn)維壓力,備份的時候,單表備份所需時間會很長,所以可叢友以根據(jù)服務(wù)器硬件條件進(jìn)行水平分表,每個表有多少數(shù)據(jù)為準(zhǔn)。
數(shù)據(jù)庫橫向切割的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫橫向切割,數(shù)據(jù)庫橫向切割: 完美解決海量數(shù)據(jù)存儲問題,mssql數(shù)據(jù)庫在磁盤陣列運(yùn)行慢,如何對SQL Server數(shù)據(jù)庫進(jìn)行橫向擴(kuò)展,mysql數(shù)據(jù)庫表太大查詢慢優(yōu)化的幾種方法的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
新聞標(biāo)題:數(shù)據(jù)庫橫向切割:完美解決海量數(shù)據(jù)存儲問題(數(shù)據(jù)庫橫向切割)
網(wǎng)站URL:http://www.fisionsoft.com.cn/article/codggpg.html


咨詢
建站咨詢
