日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用SQL Server分區表功能提高數據庫的讀寫性能

瀏覽:444日期:2023-05-02 10:03:16

一般來說一個系統最先出現瓶頸的點很可能是數據庫。比如我們的生產系統并發量很高在跑一段時間后,數據庫中某些表的數據量會越來越大。海量的數據會嚴重影響數據庫的讀寫性能。

這個時候我們會開始優化系統,一般會經過這么幾個過程:

找出SQL慢查詢,針對該SQL進行優化,比如改進SQL的寫法,查看執行計劃對全表掃描的字段建立索引

引入緩存,把一部分讀壓力加載到內存中

讀寫分離

引入隊列,把并發的請求使其串行化,來減輕系統瞬時壓力

分表/分庫

對于第五點優化方案我們來細說一下。分表分庫通常有兩種拆分維度:1.垂直切分,垂直切分往往跟業務有強相關關系,比如把某個表的某些不常用的字段遷移出去,比如訂單的明細數據可以獨立成一張表,需要使用的時候才讀取 2.水平切分,比如按年份來拆分,把數據庫按年或者按某些規則按時間段分成多個表。

拆分表之后每個表的數據量將會變小,帶來的好處是不言而喻的。不管是全表掃描,還是索引查詢都會有比較高的提升。如果把不同的表文件落在多個磁盤上那數據庫的IO性能還能進一步提高。

如果純手工拆分,比如按年份拆分成多個表,那么上層業務代碼也得進行調整。每次讀寫都得判斷該使用哪張表。如果是跨多個年份的分頁查詢更加難搞。人肉分表基本上不可能實現的,對于上層編碼簡直是個噩夢。所以針對分表分庫我們通常會使用某些中間件,比如Mycat,Sharding-JDBC等中間件。使用這些組件確實能實現分表分庫,并且對業務層代碼屏蔽了數據庫架構的改動,但是配置略顯麻煩。如果你使用的是SQL Server數據庫,并且目前還不需要分庫,只需要分表,那么其實使用內置的分區表功能是最簡單的方案。只需要打開SQL Server Management Studio簡單設置幾下就可以了,對于你上層應用完全是無感的,你的代碼、數據庫連接串都不需要改動。

以下我們通過2個簡單的測試,來簡單的演示下如何進行表分區操作,以及測試下分區前后性能變化。

測試寫性能

我們的測試方案:新建一張logs表,按年份寫入數據。2019年寫入1000000數據,2020年也寫入100000數據。為了加快寫入的速度,每個年份并行10個線程同時寫,每個線程寫100000數據,一共1000000數據。然后把logs表改成分區表再用同樣的方式寫入2000000數據。記錄耗時 比較兩次的耗時。
硬件為一臺14年產的筆記本,OS為win10。掛載2塊硬盤,1塊為5400轉的機械硬盤,1塊為15年加的SSD。磁盤性能可以說極為垃圾。未分區時表文件會落在機械硬盤上。

未分區情況下測試

使用腳本建表:

CREATE TABLE [dbo].[logs](    [id] [uniqueidentifier] NOT NULL,    [log_txt] [varchar](200) NULL,    [log_time] [datetime] NULL, CONSTRAINT [PK_logs] PRIMARY KEY CLUSTERED(    [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY])

新建一個控制臺程序編寫代碼:

class Program    {static void Main(string[] args){    Console.WriteLine("Hello World!");    Task.Run(() =>    {InsertData(2019);    });    Task.Run(() =>    {InsertData(2020);    });    Console.ReadLine();}static void InsertData(int year){    var tasks = new List<Task>();    Stopwatch sw = new Stopwatch();    sw.Start();    for (int i = 0; i < 10; i++)    {tasks.Add(Task.Run(()=> {    using (var conn = new SqlConnection())    {conn.ConnectionString = "Persist Security Info = False; User ID =sa; Password =dev@123; Initial Catalog =fq_test; Server =.\\mssql2016";conn.Open();int index = 0;for (int j = 0; j < 100000; j++){    var logtime = new DateTime(year, new Random().Next(1, 12), new Random().Next(1, 28));    conn.Execute("insert into logs2 values (newid(),"下訂單",@logtime)", new    {logtime    });    Console.WriteLine("logtime:{0} index {1}", logtime, index++);}    }}));    }    Task.WaitAll(tasks.ToArray());    sw.Stop();    Console.WriteLine("Year {0} complete , total time: {1}.", year, sw.ElapsedMilliseconds);}    }

寫完2000000數據耗時1369454毫秒。

分區情況下進行測試 開始分區

把一個表設置為分區表大概有5個步驟:

添加文件組

在文件組添加文件

新建分區函數

新建分區方案

開始分區

以下演示下如何使用SQL SERVER Management Studio管理器進行表分區:

選中數據庫=>屬性=>文件組,添加group1,group2兩個文件組。

選中數據庫=>屬性=>文件。添加file1,文件組選group1,路徑選擇一個文件目錄。這里選擇E盤data目錄。添加file2,文件組選擇group2,路徑選擇一個文件目錄。這里選擇X盤的data目錄。這樣當分區的時候數據就會落在這2個目錄下。這里的路徑可以選擇在同一個硬盤,但是為了更高的讀寫性能,如果有條件建議直接指定在不同的硬盤下。

選中logs表=>存儲=>創建分區,啟動分區向導工具。

新建一個分區函數,點擊下一步。

新建一個分區方案,點擊下一步。

選擇一個分區列,數據會根據該列進行水平拆分。

這里選擇logtime,因為時間是比較適合水平切分的一個維度。

值得數據拆分的范圍。

范圍選擇“右邊界”。

右邊界跟左邊界的差異在于對邊界值的處理。

右邊界是<,左邊界是<=,也就是包含邊界值。

我們這里設置group1存儲2019的數據,group2存儲2020的數據。

所以group1的邊界值設置為2020-01-01,group2的邊界值設置為2021-01-01 。

設置完是這個樣子,需要3個文件組。

當出現不在group1,group2范圍內的數據就會存儲在第三個文件組內。

建好分區函數、分區方案后,可以選擇生成腳本或者立即執行。

這里選擇“立即執行”。

當執行完成后,表里的數據會按照分區方案設置的邊界分散到多個文件上。

在分區情況下進行測試

先清空logs表所有的數據,然后使用同樣的代碼進行測試。

測試結果顯示寫完2000000數據耗時:

568903毫秒。

可以看到數據庫寫性能大副提高,大概提高了1倍不止的性能。

這也比較符合兩塊磁盤同時IO的預期。

測試讀性能

我們的測試方案:新建一張log2表,使用上面的代碼按年份寫入2000000數據。然后使用select語句同時讀取2019,2020年的數據。把log表轉換成分區表,重新測試select的時間。比較兩次讀取數據的時間。

sql語句:

select * from log2 where (logtime > '2019-05-01' and logtime < '2019-06-01') or (logtime > '2020-05-01' and logtime < '2020-06-01')

首先在未分區的表上測試查詢性能,花費時間為3s。

把表按前面的方法進行分區拆分,查詢花費時間為1s。

讀性能大概為未分區時的3倍。

總結

經過簡單的測試,SQL Server的分區表功能能大副提高數據庫的讀寫性能。通過SQL Server Management Stduio的簡單設置就可以對數據庫表進行分區操作,并且對應用層的代碼完全是無感的,比用分表分庫中間件來說簡單多了。

到此這篇關于使用SQL Server分區表功能提高數據庫的讀寫性能的文章就介紹到這了,更多相關SQL Server分區表內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MsSQL
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
捆绑调教美女网站视频一区| 国产精品一区亚洲| а√在线中文在线新版| 亚洲精品极品| 蜜桃精品在线| 麻豆视频观看网址久久| 亚洲精品黄色| 国产精品99一区二区| 国产精品v亚洲精品v日韩精品| 日本成人在线不卡视频| 天堂va蜜桃一区二区三区| 偷拍精品精品一区二区三区| 国产日韩高清一区二区三区在线 | 精品一区二区三区中文字幕视频| 日韩中文字幕91| 亚洲黄页一区| 国产精品88久久久久久| 国产一区2区| 国产成人精品福利| 国产图片一区| 国产欧美日韩一级| 国产乱码精品一区二区三区亚洲人 | 国产探花一区| 久久亚洲欧洲| 亚洲免费婷婷| 亚洲日韩中文字幕一区| 亚洲欧美网站在线观看| 亚洲一区久久| 日韩精品一二区| 日韩视频一二区| 久久久国产精品网站| 久久网站免费观看| 最新亚洲国产| 成人在线视频免费看| 91成人网在线观看| 日韩精品亚洲aⅴ在线影院| 美女久久久久久 | 精品入口麻豆88视频| 久久国产精品成人免费观看的软件| 日本va欧美va瓶| 99久久亚洲精品蜜臀| 亚洲自拍另类| 精品视频免费| 在线一区视频| 久久久久伊人| 久久亚洲色图| 欧美成人a交片免费看| 亚洲在线久久| 麻豆一区二区99久久久久| 亚洲激情精品| 欧美精品影院| 亚洲成人二区| 久久黄色影视| 奶水喷射视频一区| 高清一区二区三区| 在线国产精品一区| se01亚洲视频| 国产高清日韩| 免费成人av在线播放| 午夜欧美巨大性欧美巨大| 欧美天堂在线| 99视频一区| 久久男人av资源站| 国产欧美日韩在线一区二区 | 成人在线免费观看91| 免费在线观看日韩欧美| 麻豆精品蜜桃| 色乱码一区二区三区网站| 欧美日一区二区在线观看| 亚洲色图国产| 亚洲一区二区三区免费在线观看| 日韩国产激情| 韩国女主播一区二区三区| 日本a口亚洲| 日韩高清在线不卡| 日本不卡视频在线| 免费成人在线影院| 日韩中文字幕91| 中文字幕日韩欧美精品高清在线| 国精品一区二区| 欧美亚洲激情| 日韩视频不卡| 蜜桃久久久久久| 婷婷成人av| 欧美日韩91| 麻豆久久久久久| 久久精品国产99国产精品| 精品久久在线| 麻豆精品蜜桃| 亚洲男女自偷自拍| 日本一区二区三区视频在线看| 亚洲bt欧美bt精品777| 在线视频亚洲欧美中文| 国产美女久久| 欧美精品高清| 午夜性色一区二区三区免费视频| 国产精品中文| 美女亚洲一区| 久久精品99国产精品日本| 亚洲91视频| 国产精品亚洲欧美日韩一区在线 | 国产一卡不卡| 国产夫妻在线| 另类av一区二区| 成人av动漫在线观看| 视频一区二区三区入口| 日韩专区一卡二卡| 日韩极品在线观看| 国产精品成人3p一区二区三区| 欧美xxxx性| 久久中文字幕av一区二区不卡| 亚洲天堂1区| 欧美日韩国产综合网| 亚洲精品系列| 国产精品一区二区av日韩在线| 日本午夜精品视频在线观看| 日韩在线欧美| 国产高清一区| 国产精品一区亚洲| 日韩欧美自拍| 奶水喷射视频一区| 欧美国产91| 国产精品久av福利在线观看| 国产超碰精品| 鲁大师成人一区二区三区 | 亚洲不卡av不卡一区二区| 国产精品美女久久久| 国产人成精品一区二区三| 久久国产乱子精品免费女| 精品少妇一区| 99精品电影| 久久99久久久精品欧美| 午夜久久一区| 丁香婷婷久久| 日韩一区精品| 久久精品国内一区二区三区| 在线精品小视频| 亚洲欧洲美洲av| 欧美一级网址| 蜜桃一区二区三区在线| 久久国产直播| 麻豆一区二区在线| 蜜桃免费网站一区二区三区| 日韩在线二区| 久久国产精品色av免费看| 亚洲一区免费| 成人精品天堂一区二区三区| 麻豆极品一区二区三区| 日韩av网站在线免费观看| 亚洲免费网址| 日韩视频一区| 亚洲网站视频| caoporn视频在线| 日韩国产欧美在线播放| 免费日本视频一区| aa亚洲婷婷| 99视频精品| 精品久久免费| 青草av.久久免费一区| 美女久久网站| 天堂成人国产精品一区| 91精品国产调教在线观看| 日韩中文在线电影| 激情视频网站在线播放色| 97国产精品| 久久精品动漫| 欧美丰满日韩| 91精品婷婷色在线观看| 日本久久黄色| 日韩精品专区| 欧美在线亚洲综合一区| 伊人久久视频| 激情综合激情| 麻豆成人在线| 男女男精品视频网| 亚洲精品九九| 91精品国产自产精品男人的天堂| 亚洲精品美女91| 国产乱码精品一区二区三区四区| 蜜桃久久久久| 午夜精品成人av| 美美哒免费高清在线观看视频一区二区| 蜜桃av一区二区在线观看| 久久国际精品| 久久久久国产精品一区二区| 日韩一区二区久久| 欧美一级二级视频| 日韩国产专区| 亚欧成人精品| 精品视频高潮| 捆绑调教日本一区二区三区| 欧美特黄一区| 麻豆传媒一区二区三区| 91九色精品| 欧美精品1区| 日日夜夜免费精品视频| 91欧美在线| 日本a口亚洲| 日韩av二区| 日韩美女国产精品|