成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:385日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
a级精品国产片在线观看| 国产欧美一区二区三区在线老狼| 欧美日韩视频专区在线播放| 亚洲日本在线视频观看| 91日韩在线专区| 日韩午夜激情电影| 国产剧情在线观看一区二区| 欧美中文字幕一区二区三区亚洲| 亚洲成av人在线观看| 亚洲精品欧美| 久久久久综合网| 国产91丝袜在线18| 91精品国产色综合久久ai换脸| 美美哒免费高清在线观看视频一区二区 | 青青草精品视频| 免费试看一区| 亚洲激情成人在线| 在线免费日韩片| ...xxx性欧美| 黑人一区二区| 亚洲欧洲在线观看av| 欧美一区二区视频在线| 日韩视频不卡中文| 国产a久久麻豆| 日韩欧美国产综合| 国产一区二区日韩精品| 555夜色666亚洲国产免| 美女在线一区二区| 精品视频一区三区九区| 美女网站在线免费欧美精品| 欧美性大战久久久| 寂寞少妇一区二区三区| 欧美日本一道本在线视频| 麻豆国产91在线播放| 欧美视频自拍偷拍| 黄色小说综合网站| 日韩欧美亚洲另类制服综合在线| 高清成人免费视频| 精品卡一卡二卡三卡四在线| 成人av先锋影音| 日韩欧美高清在线| 99在线热播精品免费| 国产欧美一区二区三区沐欲| 亚洲午夜极品| 一区二区三区色| 久久综合久久久| 国产一区二区三区免费| 欧美成人一区二区三区片免费| 成人美女在线观看| 欧美国产日韩a欧美在线观看| 国产一区美女| 亚洲精品国产成人久久av盗摄 | 久久久久久穴| 秋霞av亚洲一区二区三| 欧美三级韩国三级日本三斤| 国产激情一区二区三区| 国产色综合一区| 99亚洲伊人久久精品影院红桃| 亚洲小少妇裸体bbw| 色欧美88888久久久久久影院| 精彩视频一区二区三区| 欧美mv日韩mv国产| 狠狠色狠狠色综合人人| 亚洲综合一区在线| 在线观看国产一区二区| 国产成人免费网站| 中文字幕精品一区| 免费久久99精品国产自在现线| 麻豆国产精品官网| 精品捆绑美女sm三区| 好吊色欧美一区二区三区四区 | 欧美伊人久久久久久午夜久久久久| 激情综合色播五月| 精品国产乱码久久久久久1区2区| 欧美激情亚洲| 亚洲成人黄色影院| 3d动漫精品啪啪一区二区竹菊| 91丨九色丨蝌蚪富婆spa| 亚洲精品成人精品456| 91福利区一区二区三区| 成人激情动漫在线观看| 欧美高清在线精品一区| 免费亚洲一区| 国产99久久久国产精品免费看| 中文字幕第一页久久| 免费视频一区二区三区在线观看| 国内精品国产成人国产三级粉色| 久久综合久久99| 国产偷久久久精品专区| 激情综合五月婷婷| 国产精品日日摸夜夜摸av| 久久亚洲二区| av在线不卡电影| 亚洲国产一区二区三区| 日韩欧美一区二区久久婷婷| 亚洲国产欧美日韩| 久久99精品久久久久久国产越南| 久久精品男人的天堂| 日韩视频在线观看国产| 久久国产综合精品| 欧美国产日本韩| 91久久国产最好的精华液| 欧美高清视频一区二区三区在线观看| 亚洲国产精品久久久久婷婷884 | 99re亚洲国产精品| 亚洲国产日日夜夜| 日韩一二三区不卡| 亚洲精品中文字幕在线| 国产裸体歌舞团一区二区| 欧美绝品在线观看成人午夜影视| 欧美久久久久久久| 久久国产精品露脸对白| 国产三级精品视频| 欧美日韩综合在线| 亚洲乱码久久| 成+人+亚洲+综合天堂| 日韩国产欧美三级| 国产精品精品国产色婷婷| 3atv在线一区二区三区| 国产精品久久久一区二区三区| 99久久er热在这里只有精品15| 日韩黄色免费电影| 国产精品久久久久桃色tv| 91精品国产综合久久福利软件| 久久久夜夜夜| 亚洲国产网站| 91色porny| 国产精品18久久久久久久久久久久 | 日本一二三四高清不卡| 69成人精品免费视频| 亚洲欧美卡通另类91av| 99国产精品一区| 国产一区二区导航在线播放| 亚洲欧美日韩成人高清在线一区| 久久老女人爱爱| 欧美一区二区福利在线| 色婷婷精品久久二区二区蜜臀av| 精品成人在线| 激情图区综合网| 亚洲美女屁股眼交3| 91精品国产综合久久久久久漫画 | 91丨porny丨在线| 国产综合色产在线精品| 亚洲欧洲三级电影| 538prom精品视频线放| 亚洲一区亚洲| eeuss国产一区二区三区| 亚洲国产日韩av| 精品久久国产字幕高潮| 欧美日韩mp4| 国产精品一级| 97se亚洲国产综合自在线| 免费观看日韩av| 中文字幕一区免费在线观看| 91精品国产品国语在线不卡| 国产一级精品aaaaa看| 色综合网色综合| 久久99精品久久久久久| 亚洲蜜臀av乱码久久精品蜜桃| 日韩精品一区二区在线观看| 欧美色综合网站| 国产一区二区你懂的| 91视频观看免费| 韩国毛片一区二区三区| 亚洲综合免费观看高清在线观看| 成人欧美一区二区三区白人| 日韩久久免费av| 欧美在线制服丝袜| 国产精品夜夜夜一区二区三区尤| 欧美一站二站| 国产精品888| **性色生活片久久毛片| 26uuu成人网一区二区三区| 欧美性一区二区| 亚洲一区二区高清视频| 国产精品影视网| 日日夜夜精品免费视频| 香港成人在线视频| 亚洲欧美国产高清| 中文字幕精品一区二区精品绿巨人| 日韩欧美美女一区二区三区| 色婷婷久久久久swag精品 | 日韩一区二区在线看| 在线观看视频一区| 国产精品一区二区三区免费观看 | 色综合色综合色综合色综合色综合| 久久国产乱子精品免费女| 亚洲va欧美va人人爽| 综合激情成人伊人| 亚洲女与黑人做爰| 国产精品久久久久婷婷| 国产色综合一区| 亚洲精品一区二区三区在线观看| 欧美三级视频在线观看 | 一本一本大道香蕉久在线精品| 久久三级视频| 国产精品一区视频| 一区二区三区四区五区精品| 欧美高清日韩| 91蝌蚪国产九色|