出于多种原因,但主要是数据量庞大,我们有 5 个 MS-SQL (2017) 分片服务器来分解任何单个服务器上的整体负载。其次,我们有一个按资产 ID 分区的实时表,以存储实时数据。每个资产的数据包大约每 2 秒到达一次。每个数据包可以有 300 到 12000 个数据点。
表分区和分片服务器运行良好。但是每隔一段时间,似乎其中一台服务器似乎停止使用分区,这会导致在删除旧数据和批量加载新数据时新数据到达时出现死锁和超时。
我的问题是为什么会发生这种情况,有没有办法检查何时或为什么会发生这种情况。我知道这是个问题,因为我可以将数据移动到临时表,删除原始表,使用相同的分区函数和方案重新创建原始表,最后将数据从临时表复制回新的“原始”表问题解决了。
根据要求的分区方案。资产 ID 是函数使用的内容,如上所述
CREATE PARTITION SCHEME [RMAPartitionScheme] AS PARTITION [RMAPartitionFunction]
TO ([HULL269_484_LymanMartin], [HULL275_541_ClarenceTriche],
[HULL277_546_RussellAdams], [HULL278_550_CharlieComeaux],
[HULL281_561_CInstaller], [HULL284_587_GrandIsle],
[HULL290_621_ShipIsland], [HULL291_638_HornIsland],
[HULL296_653_StimStarIV], [HULL293_654_CatIsland],
[HULL292_655_SanibelIsland], [HULL297_678_DauphinIsland],
[HULL137_679_StimStarBrasil], [HULL809_680_Robin],
[HULL1304_690_FastTrack], [HULL174_691_CRuler],
[HULL1328_692_FastTiger], [HULL240_695_CFighter],
[HULL778_730_Kudu], [HULL064_738_FastCheetah],
[HULL063_739_FastServer], [HULLT100_746_ITS100BSM],
[HULLBT10_749_ITSBuckeye], [HULL315_779_Elrington],
[HULL302_780_MarshIsland], [HULL321_781_Courageous],
[HULL316_782_LaTouche], [HULL317_784_BainBridge],
[HULL324_787_Contender], [HULL325_788_Champion],
[HULL318_790_Ingot], [HULL326_792_Challenger],
[HULLN01_797_SeawayMoxie], [HULLAS1_799_IslandCommander],
[HULL301_800_DeerIsland], [HULL810_804_Lucy],
[DEFAULT_FILE_GROUP])
Run Code Online (Sandbox Code Playgroud)
和功能
CREATE PARTITION FUNCTION [RMAPartitionFunction](int)
AS RANGE LEFT
FOR VALUES
(484, 541, 546, 550, 561, …Run Code Online (Sandbox Code Playgroud)