MS_SQLServerPartitioning - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ãïŒSQL ServerïŒ
- SQL Server ããŒãã£ã·ã§ã³åå²
- ïŒåæ£ã»åé·åïŒRAID / SQL Server ã®ãã¡ã€ã«ã®é 眮 / SQL Server ã®ãã¡ã€ã«ã»ã°ã«ãŒã
- ïŒéçšé¢é£ïŒSQL Server ã®ç®¡ç > ãã° > ãããã¡ã€ã©ããã¬ãŒã¹ / SQL Server ããŒã¿å§çž® / SQL Server ã®ããã¯ã¢ãã
䞻㫠SQL Server ããŒãã£ã·ã§ã³åå²ã®å¹æã«ã€ããŠèª¬æããã
-
æ§æ
-
ãããŒãã£ã·ã§ã³åå²ãã¯ãããŒãã«äžã®ç¹å®ã®åããããŒãã£ã·ã§ã³åå²åããšããŠ
æå®ãããã®åã®ç¯å²ãããŒã«ããŠãè¡ããŒã¿ãç¹å®ã®
ããã¡ã€ã«ã»ã°ã«ãŒããã«ãããããã
ãããŒãã£ã·ã§ã³ãã«æ¯ãåããæ©èœã§ããã -
ãªãããããŒãã£ã·ã§ã³åå²ãåŸã®ãããŒãã«ã»ã€ã³ããã¯ã¹ãã
ãããŒãã£ã·ã§ã³ ããŒãã«ããšãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ããšåŒã¶ã- ãããŒãã£ã·ã§ã³ ããŒãã«ããšãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã¯
1 ã€ã®è«çãšã³ãã£ãã£ãšããŠæ±ãããã - æšæºçãªããŒãã«ã»ã€ã³ããã¯ã¹ã®èšèšãšã¯ãšãªã«é¢é£ããã
ãã¹ãŠã®ããããã£ãšæ©èœããµããŒããããã - ããã«ããããšã³ãã£ãã£å
šäœã®ããŒã¿ã®æŽåæ§ãç¶æããªããã
ã°ã«ãŒãåãããããŒã¿ ãµãã»ããã«å¯Ÿããã¢ã¯ã»ã¹æ§èœã®åäžã
管çã®å¹çåãå³ãããšãã§ããã
- ãããŒãã£ã·ã§ã³ ããŒãã«ããšãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã¯
-
ãªããSQL Server ã§ã¯ã1 ã€ã®ããŒãã«ã«æå€§ 1000 åã®
ãããŒãã£ã·ã§ã³ããäœæã§ããã
-
-
广
- äž»ã«éçšç³»æ§èœïŒã€ã³ããã¯ã¹ã®ããã©ã°ã»åæ§ç¯ãããŒã¿ã®ã¢ãŒã«ã€ãïŒã®åäžãå¯èœã
- äžéšããŒã¿ ã¢ã¯ã»ã¹æ§èœïŒäžŠåã¯ãšãªã
ã¹ãã£ã³å±æåãããŒãã«çµåãããã¯å±æåïŒãæ¹åããã - ã€ã³ã¹ã¿ã³ã¹ãåå²ã§ãããããªå Žåã¯ãã€ã³ã¹ã¿ã³ã¹åå²ã§ãè¯ã
---> ã·ã£ãŒãã£ã³ã°ïŒElastic Scale, Elastic Database PoolïŒã
è£è¶³ïŒææ°åïŒäžéãšãšãã£ã·ã§ã³ïŒ:
- ããŒãã£ã·ã§ã³æ°ã®äžéã¯ãSQL Server 2012 以é 15,000 å
ïŒSQL Server 2008 R2 ãŸã§ã¯ 1,000 åïŒã- SQL Server 2016 SP1 以éãStandard Edition ã§ãå©çšå¯èœ
ïŒãã以å㯠Enterprise / Developer éå®ïŒã
è£è¶³ïŒèª€è§£ãããããç¹ïŒåäœã§ã¯éããªããªãïŒ: ããŒãã£ã·ã§ã³åå²ã¯
ãã€ã³ããã¯ã¹ã®ä»£ãããã§ã¯ãªããåäžããŒãã«ãžã®æ€çŽ¢ãéããããã ããªãã
SQL Server ã®ã€ã³ããã¯ã¹ãèŠçŽãã»ãã
广ã倧ãããå¯äœçšãå°ããã
æ¬ããŒãžèªèº«ããäž»ã«éçšç³»æ§èœã®åäžããšæžããŠãããšããã
ããŒãã£ã·ã§ã³åå²ã®äž»ç®çã¯ä»¥äžã§ããã
ç®ç å 容 ã¢ãŒã«ã€ã / ããŒãž SWITCHã«ããã¡ã¿ããŒã¿æäœã ãã§ã倧éããŒã¿ãç¬æã«åãé¢ãã¡ã³ããã³ã¹ã®å±æå ããŒãã£ã·ã§ã³åäœã§ã€ã³ããã¯ã¹åæ§ç¯ã»çµ±èšæŽæ°ã»ããã¯ã¢ãã éå±€å å€ãããŒãã£ã·ã§ã³ã ãå§çž®ããïŒèªã¿åãå°çšã«ãã ããã¯ã®å±æå LOCK_ESCALATION = AUTOã§ããŒãã«å šäœãæ¢ããªãéã«ãåŸè¿°ã®ãæ€çŽ¢æ§èœãå£åããã±ãŒã¹ãã®ãšããã
ããŒãã£ã·ã§ã³åå²åãæ€çŽ¢æ¡ä»¶ã«å«ããªãã¯ãšãªã¯ãããé ããªãã
äž»ã«ãæ¥ä»ãªã©ã®è«ççã«ã°ã«ãŒãåããã
ããŒã¿ ãµãã»ããã管çããã®ã«é©åã§ãããã©ããã«ãã£ãŠæ±ºå®ãããã
ãããŒãã£ã·ã§ã³é¢æ°ãã«ããæå®ãããã
以äžã®ããŒã¿åãé€ãã€ã³ããã¯ã¹ ããŒãšããŠäœ¿çšã§ããããŒã¿åã®åã䜿çšã§ããã
- timestamp å
- ntext å
- text å
- image å
- xml å
- varchar(max) å
- nvarchar(max) å
- varbinary(max) å
- CLR ãŠãŒã¶å®çŸ©ããŒã¿å
- å¥åããŒã¿ïŒãšã€ãªã¢ã¹ ããŒã¿ïŒå
CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
AS RANGE RIGHT FOR VALUES ( [ boundary_value [ ,...n ] ] );äžèšã®ãããŒãã£ã·ã§ã³é¢æ°ãïŒpartition_function_nameïŒã§ã¯ã
æå®ã®åïŒinput_parameter_typeïŒã®ãããŒãã£ã·ã§ã³åå²åãã«
æ ŒçŽãããå€ã«åºã¥ããããŒãã£ã·ã§ã³åå²ããè¡ãã
ãªããRANGE ã«ã¯ LEFT ãããRIGHT ãæå®ããããšãæšå¥šãããã
CREATE PARTITION FUNCTION partition_function_name ( int )
AS RANGE RIGHT FOR VALUES ( 100, 200, 300 );ãšæå®ããå Žåããã®ãããŒãã£ã·ã§ã³é¢æ°ãã«ãã£ãŠã
- ããŒãã£ã·ã§ã³ 1 : åã®å€ < 100
- ããŒãã£ã·ã§ã³ 2 : 100 <= åã®å€ < 200
- ããŒãã£ã·ã§ã³ 3 : 200 <= åã®å€ < 300
- ããŒãã£ã·ã§ã³ 4 : 300 <= åã®å€
ã® 4 ã€ã®ãããŒãã£ã·ã§ã³ãã«åå²ãããã
è£è¶³ïŒãªã
RANGE RIGHTãæšå¥šãããã®ãïŒ: å¢çå€ã
å³åŽïŒæ¬¡ã®ïŒããŒãã£ã·ã§ã³ã«å«ãŸããããã
æ¥ä»ã§ã®åå²ã§å¢çãçŽæçã«æžããããã§ããã-- RANGE RIGHT ãªãããã®æã® 1 æ¥ããå¢çã«æžãã CREATE PARTITION FUNCTION pf_Monthly (date) AS RANGE RIGHT FOR VALUES ('2026-01-01', '2026-02-01', '2026-03-01'); -- P2 = 2026-01-01 00:00:00.000 ä»¥äž 2026-02-01 æªæº
RANGE LEFTã ãšã1 æã®æåŸã®ç¬éããå¢çã«ããå¿ èŠãããã
datetimeã®ç²ŸåºŠïŒ3.33ms å»ã¿ïŒãŸã§æèããªããã°ãªããäºæ ãèµ·ããããã
åæ¹ã®é¢ä¿ã¯ä»¥äžã®ããã«ãªãã
- ãããŒãã£ã·ã§ã³ãã¯ããã¡ã€ã«ã»ã°ã«ãŒãããè·šãããšã¯ã§ããªãã
- 1 ã€ã®ãããŒãã£ã·ã§ã³ããã1 ã€ã®ããã¡ã€ã«ã»ã°ã«ãŒããã«ãããããã
- ããã€ãã®ãããŒãã£ã·ã§ã³ããã1 ã€ã®ããã¡ã€ã«ã»ã°ã«ãŒããã«ãããããã
- ãã¹ãŠã®ãããŒãã£ã·ã§ã³ããã1 ã€ã®ããã¡ã€ã«ã»ã°ã«ãŒããã«ãããããã
ãããŒãã£ã·ã§ã³é¢æ°ãã®ãããŒãã£ã·ã§ã³åå²ãã§æå®ããããããŒãã£ã·ã§ã³ããšã
ããã¡ã€ã«ã»ã°ã«ãŒããã®ããããæå®ããŠã
ãããŒãã£ã·ã§ã³æ§æããå®çŸ©ããã
ããŒãã£ã·ã§ã³æ§æã®å®çŸ©ïŒ
CREATE PARTITION SCHEME partition_schema_name
AS PARTITION partition_function_name
TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] );äžèšã®ãããŒãã£ã·ã§ã³æ§æãã®å®çŸ©ã§ã¯ã
- ãããŒãã£ã·ã§ã³é¢æ°ãã§åå²ãããããŒãã£ã·ã§ã³ããã
- ãªã¹ãã«æå®ããããã¡ã€ã«ã»ã°ã«ãŒããã®é ã«ãããããã
â» ãããŒãã£ã·ã§ã³æ§æãã§äœ¿çšã§ãããããŒãã£ã·ã§ã³é¢æ°ã㯠1 ã€ã®ã¿ã
â» 1 ã€ã®ãããŒãã£ã·ã§ã³é¢æ°ãã¯ãè€æ°ã®ãããŒãã£ã·ã§ã³æ§æãã§äœ¿çšã§ããã
ãããŒãã£ã·ã§ã³æ§æããšãããŒãã£ã·ã§ã³åå²åããæå®ãã
ãããŒãã£ã·ã§ã³ ããŒãã«ããäœæããã
ããŒãã£ã·ã§ã³ ããŒãã«ã®å®çŸ©ïŒ
CREATE TABLE table_name(
<column_definition>[ ,...n ])
ON partition_schema_name (div_column_name);ãããŒãã£ã·ã§ã³æ§æãã«ãããŒãã£ã·ã§ã³åå²åããæå®ãã
ãããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ããããã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ããäœæããã
ããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ã®å®çŸ©ïŒ
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON table_name (column_name)
ON partition_schema_name (div_column_name);ç§»è¡ã¡ã¢ïŒæ£èª€ïŒ: å ããŒãžã®ããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ã®æ§æã¯
ON table_name (column_name);ãšè¡æ«ã«ã»ãã³ãã³ãå ¥ã£ãŠããã
ç¶ãON partition_schema_name ...ãæ§æäžã€ãªãããªãç¶æ ã ã£ãã
ã»ãã³ãã³ãåé€ããŠä¿®æ£ããã
SELECT f.name, r.value, *
FROM sys.partition_range_values r
INNER JOIN sys.partition_functions f
ON r.function_id = f.function_idãããŒãã£ã·ã§ã³æ§æããããã¡ã€ã«ã»ã°ã«ãŒããããããŒãã£ã·ã§ã³çªå·ãã®é¢ä¿ã確èª
SELECT
ps.name As [ããŒãã£ã·ã§ã³æ§æå],
ds.name As [ãã¡ã€ã« ã°ã«ãŒãå],
dds.destination_id As [ããŒãã£ã·ã§ã³çªå·],
*
FROM
sys.destination_data_spaces dds
INNER JOIN sys.partition_schemes ps
ON dds.partition_scheme_id = ps.data_space_id
INNER JOIN sys.data_spaces ds
ON dds.data_space_id = ds.data_space_id
ORDER BY
partition_scheme_id- partition_function_nameïŒãããŒãã£ã·ã§ã³é¢æ°ã
- expressionïŒå€ïŒïŒããŒãã£ã·ã§ã³åå²åãæå®ããïŒ
SELECT
*, $PARTITION.partition_function_name(expression) As [ããŒãã£ã·ã§ã³çªå·]
FROM
table_nameè¥ããã¯ã
SELECT
$PARTITION.partition_function_name(expression) As [ïŸïŸïœ°ïŸïœšïœŒïœ®ïŸçªå·] ,
COUNT(*) As [è¡æ°]
FROM
table_name
GROUP BY
$PARTITION.partition_function_name(expression)è£è¶³ïŒè¡æ°ã¯ã¡ã¿ããŒã¿ããåããïŒ: äžèšã®
COUNT(*)ã¯
ããŒãã«å šäœãã¹ãã£ã³ãããããå€§èŠæš¡ããŒãã«ã§ã¯éãã
ããŒãã£ã·ã§ã³ããšã®è¡æ°ã ããªããã«ã¿ãã° ãã¥ãŒããå³åº§ã«ååŸã§ãããSELECT OBJECT_NAME(p.object_id) AS table_name, i.name AS index_name, p.partition_number, p.rows, fg.name AS filegroup_name, p.data_compression_desc FROM sys.partitions AS p JOIN sys.indexes AS i ON i.object_id = p.object_id AND i.index_id = p.index_id JOIN sys.allocation_units AS au ON au.container_id = p.hobt_id JOIN sys.filegroups AS fg ON fg.data_space_id = au.data_space_id WHERE p.object_id = OBJECT_ID('dbo.table_name') AND i.index_id IN (0, 1) ORDER BY p.partition_number;
ãã¡ã€ã«ã»ã°ã«ãŒãã®æ§èœåäž
- ãç°¡æã¹ãã©ã€ãã³ã°ã
- ã䞊åã¯ãšãªã
ã«å ãã以äžã®æ§èœåäžãå³ãããšãã§ããã
ãããŒãã£ã·ã§ã³ãæ¯ã«
-
ã¹ããã ã¹ãã£ã³æäœã®å¹æã«ãããã¹ãã£ã³ã屿åïŒæ€çŽ¢åŠçã®é«éåïŒ
-
ïŒãšã¹ã«ã¬ãŒã·ã§ã³æïŒããã¯ã屿åïŒæŽæ°åŠçã®åæå®è¡æ§ã®åäžïŒ
-
䜵眮çµåã«ããããŒãã«çµåãå®è¡ïŒããŒãã«çµååŠçã®é«éåïŒ
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«
ãåºå®ãããå¿ èŠãããã
-
ãããŒãã£ã·ã§ã³åå²åããæ€çŽ¢æ¡ä»¶ã«è¿œå ããå Žåã
- ã¹ããã ã¹ãã£ã³ã®å¹æã«ãããç¯å²ã¹ãã£ã³æ€çŽ¢ã®æ§èœãåäžããã
- ããã¯å±æåã®å¹æã«ãããæŽæ°åŠçã®åæå®è¡æ§ãåäžããã
-
åè
ã¹ããã ã¹ãã£ã³ãããã¯å±æåã¯ãé©åã«èšèšãããã
OLTP ã¢ããªã±ãŒã·ã§ã³ã倧ããæ§èœåäžããããã®ã§ã¯ãªãã-
ã¹ããã ã¹ãã£ã³
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«
ãåºå®ãããå¿ èŠã¯ãªãã -
ããã¯å±æå
- ããŒã¿ããŒã¹ ãšã³ãžã³ãããã㯠ãšã¹ã«ã¬ãŒã·ã§ã³ãå¿
èŠã§ãããšå€æããå Žåã
è¡ããã¯ã»ããŒç¯å²ããã¯ãããŒãž ããã¯ã§ã¯ãªãã
ããŒãã« ããã¯ã«çŽæ¥ãšã¹ã«ã¬ãŒãããã - åæ§ã«ãããŒãž ããã¯ã¯åžžã«ããŒãã« ããã¯ã«ãšã¹ã«ã¬ãŒããããã
- ããããSQL Server 2008 ããããããŒãã£ã·ã§ã³ ããŒãã«ãã®ããã¯ã«ã€ããŠã¯ã
ããŒãã« ã¬ãã«ã§ã¯ãªããããŒããŸã㯠B ããªãŒïŒHoBTïŒã¬ãã«ã®
ãã㯠ãšã¹ã«ã¬ãŒã·ã§ã³ã«çããããšã§ã
ããã¯åŸ ã¡ãå°ãªãããåæå®è¡æ§ãåäžã§ããããã«ãªã£ãã
- ããŒã¿ããŒã¹ ãšã³ãžã³ãããã㯠ãšã¹ã«ã¬ãŒã·ã§ã³ãå¿
èŠã§ãããšå€æããå Žåã
-

è£è¶³ïŒHoBT ã¬ãã«ã®ãšã¹ã«ã¬ãŒã·ã§ã³ã¯æ¢å®ã§ã¯ãªãïŒ: ãã®æ©èœã䜿ãã«ã¯ã
ããŒãã«ã«æç€ºçãªèšå®ãå¿ èŠã§ãããALTER TABLE dbo.PartitionedTable SET (LOCK_ESCALATION = AUTO);æ¢å®ã¯
TABLEã®ãŸãŸãªã®ã§ãããŒãã£ã·ã§ã³åå²ããã ãã§ã¯
ããã¯å±æåã®æ©æµã¯åããããªã
ïŒSQL Server ã®ããã¯ã®ãšã¹ã«ã¬ãŒã·ã§ã³åç §ïŒã
è£è¶³ïŒãã¹ããã ã¹ãã£ã³ãã¯çŸåšãããŒãã£ã·ã§ã³ã®é€å€ãïŒ: çŸåšã®
ããã¥ã¡ã³ãã§ã¯ **partition eliminationïŒããŒãã£ã·ã§ã³ã®é€å€ïŒ**ãšåŒã°ããã
å®è¡ãã©ã³ã®æŒç®åã®ããããã£ã«
Actual Partition Count/Partitions Accessedã衚瀺ããã
å®éã«ããã€ã®ããŒãã£ã·ã§ã³ãèªãŸãããã確èªã§ãã
ïŒå®è¡ãã©ã³ã®ã°ã©ãã£ã«ã«è¡šç€ºïŒã
-
ã䜵眮çµåãã¯ãåããããŒãã£ã·ã§ã³æ§æãã® 2 ã€ã®ããŒãã«ãã
ãããŒãã£ã·ã§ã³åå²åããããŒã«ããŠçµåããéã«çºçãã
ïŒçµåã«äœ¿çšãããããŒãã£ã·ã§ã³åå²åãã«
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ããä»äžããŠããïŒã -
ãã®å Žåã«ãªããã£ãã€ã¶ãçæããã䜵眮çµåãã®å®è¡ãã©ã³ã¯ã
ãããŒãã£ã·ã§ã³ãæ¯ãã䞊ååŠçãã§çµåãããããã
ã¡ã¢ãªãç¯çŽããåŠçæéãççž®ãããã
ããŒãã£ã·ã§ã³åå²ã«ãã£ãŠãã¯ãšãªæ§èœãå£åããã±ãŒã¹ããããããã
-
ããŒãã£ã·ã§ãã³ã°ã«ãã£ãŠèªã¿åãæ°ïŒã¢ã¯ã»ã¹ãããããŒãã£ã·ã§ã³æ°ïŒã
å€ãã£ãŠããïŒå€§ãããªãïŒã±ãŒã¹ãããã
ãã ããããŒãã£ã·ã§ã³ããŒãå«ããæ€çŽ¢ã§ã¯ãèªã¿åãæ°ã¯å€§ãããªããªããšãªã£ãŠããã
è£è¶³ïŒãªãå£åããã®ãïŒ: ããŒãã£ã·ã§ã³åå²ãããšã
ã€ã³ããã¯ã¹ãããŒãã£ã·ã§ã³ããšã® B ããªãŒã«åå²ãããã
ãã®ãããããŒãã£ã·ã§ã³åå²åãæ€çŽ¢æ¡ä»¶ã«å«ãŸãªãã¯ãšãªã§ã¯ã
å šããŒãã£ã·ã§ã³ã® B ããªãŒããããã蟿ãå¿ èŠãããã
åå²ããŠããªãå Žåããèªã¿åãæ°ãå¢ããããæ¥ä»ã§ããŒãã£ã·ã§ã³åå²ãããã
äž»èŠãªæ€çŽ¢ã¯é¡§å®¢ ID ã§è¡ãããããšãã£ãèšèšã¯å žåçãªå€±æäŸã
äž»èŠã¯ãšãªã®WHEREã«ããŒãã£ã·ã§ã³åå²åãå ¥ããã
å¿ ãå ã«ç¢ºèªããããšã
-
ããŒãã£ã·ã§ã³ ããŒãã«ãšããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ã«å¯Ÿããã¯ãšãªåŠçã®æ©èœåŒ·å
https://learn.microsoft.com/ja-jp/sql/relational-databases/partitions/partitioned-tables-and-indexesããŒãã£ã·ã§ã³ ããŒãã«ãšããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ã«å¯Ÿããã¯ãšãªã®å®è¡ãã©ã³ã¯ã
Transact-SQL ã®SET SHOWPLAN_XMLãŸãã¯SET STATISTICS XMLã䜿çšãããã
SSMSã®ã°ã©ãã£ã«ã«å®è¡ãã©ã³åºåã䜿çšããŠèª¿ã¹ãããšãã§ããã
ã¡ã³ããã³ã¹
- ããŒãã« ããŒã¿ã®ã¢ãŒã«ã€ã
- ã€ã³ããã¯ã¹ã®æçåã®å±æåãåæ§ç¯ã»æé©å
ãããããŒãã£ã·ã§ã³ãæ¯ã«å¯èœãšãªãã
- ä¿å®ã»éçšäžã®ããŒã¿ç®¡çã¿ã¹ã¯ã®æ§èœãåäžããããããç°¡åã«ãªã£ããããã
- ãããã®æ©èœã¯ã24 æéæ¢ããããªãã·ã¹ãã ãªã©ã§ç¹ã«æå¹ãšãªãã
é©åã«ãããŒãã£ã·ã§ã³åå²ããè¡ãã°ãäžèšã®ãããªã
å€ãããŒã¿ãé æ¬¡ã¢ãŒã«ã€ããããã¹ã©ã€ãã£ã³ã° ãŠã€ã³ããŠããšåŒã°ããæäœãå¯èœã§ããã
- ã¹ã€ããæ©èœã䜿çšïŒäŸïŒçšŒåããŒãã«ããã¢ãŒã«ã€ãã»ããŒãã«ãžã¹ã€ããïŒã
- ã¹ã€ããæ©èœã¯ãå éšçãªãã€ã³ã¿å€æŽã®ã¿ã§å®äºããã®ã§ãé«éãªåŠçãå¯èœã§ããã
ãã¹ã©ã€ãã£ã³ã° ãŠã€ã³ããŠãæäœã¯ãæ¬¡ã®æé ã§è¡ãããã
-
ãããŒã¿ããŒã¹ ã¹ããŒããã«
-
皌åããŒãã«ã»ã¢ãŒã«ã€ã ããŒãã«ã®
ã»ãããŒãã£ã·ã§ã³ ããŒãã«ã
ã»ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ã
ãåããããŒãã£ã·ã§ã³æ§æãã§äœæã -
次ã«ïŒã¢ãŒã«ã€ãã®ããã«ïŒ
æ°èŠäœæãããããŒãã£ã·ã§ã³ãã§äœ¿çšããã
æ°èŠããã¡ã€ã«ã»ã°ã«ãŒããã远å ã
-
-
皌åããŒãã«ã»ã¢ãŒã«ã€ã ããŒãã«ã«
- æ°èŠãããŒãã£ã·ã§ã³ãã§äœ¿çšããããã¡ã€ã«ã»ã°ã«ãŒãããæå®ã
- ãããŒãã£ã·ã§ã³ãå¢çã远å ããæ°èŠãããŒãã£ã·ã§ã³ããåå²äœæã
-
皌åããŒãã«ããã¢ãŒã«ã€ã ããŒãã«ã«ã
æãå€ããããŒãã£ã·ã§ã³ãã®ããŒã¿ãã¹ã€ããã- 皌åããŒãã«ãžãã¹ã€ãããããããŒãã£ã·ã§ã³ãã察象ãšãªã
ããŒã¿æ¿å ¥ãçŠæ¢ããå¶çŽã远å ã - ãããŒãã£ã·ã§ã³ããå¢ããŠãããã
ãããŒãã£ã·ã§ã³ãå¢çãæ¶å»ããŠãããŒãã£ã·ã§ã³ããããŒãžããã
- 皌åããŒãã«ãžãã¹ã€ãããããããŒãã£ã·ã§ã³ãã察象ãšãªã
以äžã«ããã¹ã©ã€ãã£ã³ã° ãŠã€ã³ããŠãæäœã®æ³šæç¹ãçºããã
-
ã¹ã€ããæäœã¯ãåãããã¡ã€ã«ã»ã°ã«ãŒããã«å±ãããããŒãã£ã·ã§ã³ãå士ã§è¡ãã
-
ãªããã¹ã€ããæ©èœã¯ãåãããã¡ã€ã«ã»ã°ã«ãŒããå ã§ã®ã¿æå¹ã«ãªãã®ã§ã
皌åããŒãã«ãšãã¢ãŒã«ã€ã ããŒãã«ã®ãããŒãã£ã·ã§ã³ããš
ããã¡ã€ã«ã»ã°ã«ãŒããã®å¯Ÿå¿ãããŸã£ããåãã«ãããã
åæ¹ãšã 1 ã€ã®ããã¡ã€ã«ã»ã°ã«ãŒããã®ã¿ã§ãããŒãã£ã·ã§ã³åå²ãããã -
ãã ããåŸè ã® 1 ã€ã®ããã¡ã€ã«ã»ã°ã«ãŒããã§ã¯
ãæ®µéçãªã¹ãã¢ããªã©ãå®çŸã§ããªãã®ã§ã
åºæ¬çã«ã皌åããŒãã«ãšã¢ãŒã«ã€ã ããŒãã«ã®ãããŒãã£ã·ã§ã³ããš
ããã¡ã€ã«ã»ã°ã«ãŒããã®å¯Ÿå¿ã "ãŸã£ãã" åãã«ãã
è€æ°ã®ããã¡ã€ã«ã»ã°ã«ãŒããã§å®è£ ããããšãæšå¥šããã
-
-
ã¹ã€ããå ãšã¹ã€ããå ã®ãããŒãã£ã·ã§ã³ ããŒãã«ãã¯ã
åãããŒã¿å§çž®èšå®ã«ããŠããã -
ã¹ã€ããå ãšã¹ã€ããå ã®ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã
ãããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ãããŠããã
⻠詳现ã¯ãèªç¿æžãåç §ã
è£è¶³ïŒ
SWITCHã®åææ¡ä»¶ïŒ:ALTER TABLE ... SWITCHã¯
ã¡ã¿ããŒã¿æäœã®ã¿ã§å®äºããããäžç¬ã§çµãããã
æç«ã«ã¯å€æ°ã®åææ¡ä»¶ããããäž»ãªãã®ïŒ
æ¡ä»¶ å 容 åäžãã¡ã€ã« ã°ã«ãŒã äžèšã®ãšãã ã¹ããŒãã®äžèŽ åã®å®çŸ©ã»ç §åé åºã»NULL 蚱容ã»IDENTITY ãŸã§äžèŽ ã€ã³ããã¯ã¹ã®äžèŽ åãã€ã³ããã¯ã¹ãåãæ§æã§ååšããããš å§çž®èšå®ã®äžèŽ SQL Server ããŒã¿å§çž® å¶çŽ ç§»åå ã空ã§ããããšãããã³ç¯å²ãä¿èšŒãã CHECKå¶çŽå€éšã㌠移åå ããŒãã«ãåç §ããå€éšããŒããªãããš ã¹ã€ããå ã空ã®ã¹ããŒãžã³ã° ããŒãã«ã«ããŠã
ããããTRUNCATEããã®ãå®çªã®ããŒãžæé ã
ãªããSQL Server 2016 以éã¯
TRUNCATE TABLE ... WITH (PARTITIONS (n))ã§
ããŒãã£ã·ã§ã³ãçŽæ¥åãæšãŠãããšãã§ããã
-
䞊åã¯ãšãªã¯ãã¯ãšãªå®è¡ã ãã§ãªãã
ããã©ã°ãåæ§ç¯ã®ã€ã³ããã¯ã¹æäœã«ãé©çšãããã -
ãã®å ŽåããããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã
ãããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ãããŠããã -
ãããŒãã£ã·ã§ã³çªå·ããæå®ãããããã©ã°ãåæ§ç¯
-
ALTER INDEXã¹ããŒãã¡ã³ãã®REBUILDãREORGANIZEã«
ãããŒãã£ã·ã§ã³çªå·ããæå®ããŠäœ¿çšããã -
REBUILDã¯DBCC DBREINDEXãšã
REORGANIZEã¯DBCC INDEXDEFRAGãšåãæ©èœã - ãããã
DBCC DBREINDEXã«ã€ããŠã¯
ãããŒãã£ã·ã§ã³çªå·ããæå®ããåŒæ°ãååšããªãã
-
-
åè
- ã€ã³ããã¯ã¹ã®åç·šæãšåæ§ç¯
https://learn.microsoft.com/ja-jp/sql/relational-databases/indexes/reorganize-and-rebuild-indexes - 䞊åã€ã³ããã¯ã¹æäœ
https://learn.microsoft.com/ja-jp/sql/relational-databases/indexes/configure-parallel-index-operations
- ã€ã³ããã¯ã¹ã®åç·šæãšåæ§ç¯
- ããŒãã£ã·ã§ã³åå²ããããŒãã«ã¯ããããŒãã£ã·ã§ã³ ããŒãã«ããšåŒã¶ã
- ããŒãã£ã·ã§ã³åå²ã¯ãããŒãã«ã ãã§ãªããã€ã³ããã¯ã¹ã«ãé©çšã§ããã
- ããŒãã£ã·ã§ã³åå²ããã€ã³ããã¯ã¹ã¯ããããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ããšåŒã¶ã
- ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã¯ãå¿ ããããããŒãã£ã·ã§ã³ ããŒãã«ããå¿ èŠãšããªãã
- ãããŒãã£ã·ã§ã³ ããŒãã«ããšåäžã®ãããŒãã£ã·ã§ã³æ§æãã§ã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ããå®è£ ã§ããã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ã
- ãããŒãã£ã·ã§ã³ ããŒãã«ããšåäžã®ãããŒãã£ã·ã§ã³æ§æãã§ã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ããå®è£ ããããšãã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ãããããšèšãã - SQL Server Management Studio ã¯ãæ¢å®ã§ã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«
ãåºå®ãããåäœããšãã
è£è¶³ïŒçšèªïŒ: ãåºå®ãã¯è±èªã® **alignedïŒé 眮ãäžèŽããïŒ**ã®èš³ã
å ¬åŒããã¥ã¡ã³ãã§ã¯
**ãé 眮ãããã€ã³ããã¯ã¹ã/ãé 眮ãããŠããªãã€ã³ããã¯ã¹ã**ãš
èš³ãããããšãããã
-
äžææ§å¶çŽ
ãããŒãã£ã·ã§ã³åå²åããå«ãã§ãããŠããŒã¯ ã€ã³ããã¯ã¹ïŒäžææ§å¶çŽïŒ-
ãããŒãã£ã·ã§ã³åå²åããå«ãŸãªããããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã§ã¯ã
è€æ°ã®ãããŒãã£ã·ã§ã³ãéã«è·šãäžææ§ãä¿èšŒã§ããªãããã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«
ãåºå®ãããå¿ èŠãããã -
ãããŒãã£ã·ã§ã³åå²åãããŠããŒã¯ ã€ã³ããã¯ã¹ïŒäžææ§å¶çŽïŒã«
å«ããããšãã§ããªãå Žåã代çšãšã㊠DML ããªã¬ã䜿çšããããšã§
ãŠããŒã¯ ã€ã³ããã¯ã¹ïŒäžææ§å¶çŽïŒãä¿èšŒããå¿ èŠãããã
-
è£è¶³ïŒããªã¬ã«ããäžææ§ä¿èšŒã¯é¿ãããïŒ: DML ããªã¬ã§ã®ä»£çšã¯ã
åæå®è¡äžã§ç«¶åãåãããŒãå±éºããããæ§èœãèœã¡ã
ïŒSQL Server ã®ããªã¬ïŒã
å®åã§ã¯ã
- éåºå®ïŒnon-alignedïŒã®äžæã€ã³ããã¯ã¹ãäœã
ïŒããŒãã«ãšã¯å¥ã®æ§æã«ããã°å šäœã®äžææ§ãä¿èšŒã§ããã
ãã ãSWITCHã䜿ããªããªãïŒ- äž»ããŒã«ããŒãã£ã·ã§ã³åå²åãå«ãã
ïŒè€åäž»ããŒã«ããèšèšãæåããéžã¶ïŒã®ãããããåãã®ãäžè¬çã
ãäžææ§ã®ä¿èšŒããšãSWITCHã®å©çšãã¯ãã¬ãŒããªãã«ãªãã
-
ã¹ã©ã€ãã£ã³ã° ãŠã€ã³ããŠ
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ã
ããããšã«ããããããŒã¿ã®ã¢ãŒã«ã€ãïŒã¹ã©ã€ãã£ã³ã° ãŠã€ã³ããŠïŒããå¯èœã«ãªãã -
䜵眮çµå
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ã
ããããšã«ãããã䜵眮çµåã«ããããŒãã«çµåããå¯èœã«ãªãã
ã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã¯ã
ããŒã¹ã®ãããŒãã£ã·ã§ã³ ããŒãã«ãã®ãããŒãã£ã·ã§ã³æ§æãããç¬ç«ããŠå®è£
ã§ããã
ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã®äœæã«ã€ããŠã®èæ ®äºé ã«ã€ããŠã以äžã«çºããã
-
ãŠããŒã¯ ã€ã³ããã¯ã¹ïŒäžææ§å¶çŽïŒã§ãªã
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³åå²ãããå Žåã
ã¯ã©ã¹ã¿åããŒã«ãããŒãã£ã·ã§ã³åå²åããæå®ããªãããšãå¯èœã§ããã -
SQL ServerïŒã® GUIïŒã¯ã
æ¢å®ã§ã¯ã©ã¹ã¿åããŒã®äžèЧã«ãããŒãã£ã·ã§ã³åå²åãã远å ããã
-
ãŠããŒã¯ ã€ã³ããã¯ã¹ïŒäžææ§å¶çŽïŒã§ãªã
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãããããŒãã£ã·ã§ã³åå²ãããå Žåã
ããŒã«ãããŒãã£ã·ã§ã³åå²åããæå®ããªãããšãå¯èœã§ããã -
SQL ServerïŒã® GUIïŒã¯ã
æ¢å®ã§ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®éããŒåãã
ãä»å åã€ã³ããã¯ã¹ãã®ä»å åãšããŠ
ãããŒãã£ã·ã§ã³åå²åãã远å ããã
ãããŒãã£ã·ã§ã³ ããŒãã«ãäžã«ã€ã³ããã¯ã¹ãäœæããéã
-
äžŠã¹æ¿ãããŒãã«ã¯ãå§ãã«ãããŒãã£ã·ã§ã³ãæ¯ã«ãã¡ã¢ãªäžã«äœæãããã
-
次ã«ããããŒãã£ã·ã§ã³ãæ¯ã«ãããã¡ã€ã«ã»ã°ã«ãŒããã®ãã¡ã€ã«äžã«äœæãããã
ïŒSORT_IN_TEMPDBãªãã·ã§ã³ãæå®ãããŠããå Žå㯠tempdb ã®ãã¡ã€ã«ïŒ -
ãããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ãããããããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãã®
äœæãå®è¡ããå Žåã- äžŠã¹æ¿ãããŒãã«ã¯ãã¡ã¢ãªäžã«äžã€ãã€äœæãããã®ã§
ã¡ã¢ãªã®æ¶è²»ãæããããšãã§ããã
- äžŠã¹æ¿ãããŒãã«ã¯ãã¡ã¢ãªäžã«äžã€ãã€äœæãããã®ã§
-
ãããããããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ããããªãåçš®ã€ã³ããã¯ã¹ã®
äœæãå®è¡ããå Žåã-
äžŠã¹æ¿ãããŒãã«ã¯è€æ°åæã«äœæãããã®ã§ã¡ã¢ãªã®æ¶è²»ãå€ããªãã
- äŸãã°ã100 åã®ãããŒãã£ã·ã§ã³ãããæ§æããã
ãããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ããããªãåçš®ã€ã³ããã¯ã¹ãäœæããã«ã¯ã
4,000 ããŒãžãåæã«äžŠã¹æ¿ããããšãã§ãã 32MB ã®ã¡ã¢ãªãæ¶è²»ããã
- äŸãã°ã100 åã®ãããŒãã£ã·ã§ã³ãããæ§æããã
-
ãŸããSQL Server ããã«ãããã»ããµïŒãã«ãã³ã¢ïŒã®ã䞊ååŠçãã«ãã£ãŠ
ãããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ããããªãåçš®ã€ã³ããã¯ã¹ã®äœæã
å®è¡ããå Žåãã¡ã¢ãªã®èŠä»¶ãããã«é«ããªãå Žåãããã-
äŸãã°ãåæã« 4 ã€ã®ã¹ã¬ããã§ã100 åã®ããŒãã£ã·ã§ã³ããæ§æããã
ãããŒãã£ã·ã§ã³ ããŒãã«ãã«ãåºå®ããããªãåçš®ã€ã³ããã¯ã¹ãäœæããã«ã¯ã
4,000 ããŒãž à 4 ã¹ã¬ãã ïŒ 16,000 ããŒãžåã®ã128MB ã®ã¡ã¢ãªãæ¶è²»ããã -
ã¡ã¢ãªã確ä¿ã§ããã°ãã€ã³ããã¯ã¹äœæã¯æåãããã
å Žåã«ãã£ãŠãããã¡ ãã£ãã·ã¥ã®æ¯æžããããŒãžã³ã°ã®çºçãªã©ã«èµ·å ããŠã
ã€ã³ããã¯ã¹äœæã®æ§èœãäœäžããå Žåãããã -
䞊åã€ã³ããã¯ã¹æäœã®æ§æ
https://learn.microsoft.com/ja-jp/sql/relational-databases/indexes/configure-parallel-index-operationsâ»
MAXDOPã€ã³ããã¯ã¹ ãªãã·ã§ã³ã䜿çšããŠã
ã䞊ååŠçãã®ã¹ã¬ãããæžããããšãã§ããã
-
-
ããŒãã£ã·ã§ãã³ã°åŸãPARTITION FUNCTION ã®åé€ã¯ã§ããªãããã§ãã
-
DROP PARTITION FUNCTION (Transact-SQL)
https://learn.microsoft.com/ja-jp/sql/t-sql/statements/drop-partition-function-transact-sqlããŒãã£ã·ã§ã³é¢æ°ãåé€ã§ããã®ã¯ã察象ãšãªãããŒãã£ã·ã§ã³é¢æ°ãã
çŸåšã©ã®ããŒãã£ã·ã§ã³æ§æã§ã䜿çšãããŠããªãå Žåã®ã¿ã§ãã
ããŒãã£ã·ã§ã³é¢æ°ããããããã®ããŒãã£ã·ã§ã³æ§æã§äœ¿çšãããŠããå Žåã
DROP PARTITION FUNCTIONã§ã¯ãšã©ãŒãè¿ãããŸãã
調ã¹ãŠã¿ããšã
- ããŒãã£ã·ã§ã³ ããŒãã«ãšããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ã®å€æŽ
https://learn.microsoft.com/ja-jp/sql/relational-databases/partitions/modify-a-partition-function\ ããŒãã£ã·ã§ã³ ããŒãã«ããéããŒãã£ã·ã§ã³ ããŒãã«ãžã®å€æ- ïŒ1ïŒã»ã»ã»ããŒãã«ãæ§æããããŒãã£ã·ã§ã³ã 1 ã€ã ãã«ãªãããã«ã
ããŒãã£ã·ã§ã³ ããŒãã«ã®ããŒãã£ã·ã§ã³é¢æ°ã倿ŽããŸãã- ALTER PARTITION FUNCTION (Transact-SQL)
https://learn.microsoft.com/ja-jp/sql/t-sql/statements/alter-partition-function-transact-sql
- ALTER PARTITION FUNCTION (Transact-SQL)
- ïŒ2ïŒããŒãã«ã«ããŒãã£ã·ã§ã³åå²ãããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã
é©çšãããŠããå Žåã¯ãã€ã³ããã¯ã¹ãåé€ãã
éããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãšããŠåæ§ç¯ããŠãåãçµæãåŸãããŸãã- CREATE INDEX (Transact-SQL)
https://learn.microsoft.com/ja-jp/sql/t-sql/statements/create-index-transact-sql
- CREATE INDEX (Transact-SQL)
- ïŒ1ïŒã»ã»ã»ããŒãã«ãæ§æããããŒãã£ã·ã§ã³ã 1 ã€ã ãã«ãªãããã«ã
ãšããã®ã§ã
äžèšïŒ1ïŒorïŒ2ïŒã§ã®ã¿ãåé€å¯èœãªãããã
è£è¶³ïŒé åºïŒ: äŸåé¢ä¿ããããããåé€ã¯
ããŒãã«ïŒã€ã³ããã¯ã¹ â ããŒãã£ã·ã§ã³æ§æ â ããŒãã£ã·ã§ã³é¢æ°
ã®é ã«ããè¡ããªãã
ãããŒãã£ã·ã§ã³æ§æãæ®ã£ãŠããŠé¢æ°ãæ¶ããªãããšããã®ã
å ããŒãžã®ãããã©ããã§ãsys.partition_schemesã確èªããŠ
å ã«DROP PARTITION SCHEMEããå¿ èŠãããã
SQL Server ã®ãã¡ã€ã«ã»ã°ã«ãŒã
- ããŒãã£ã·ã§ã³ ããŒãã«ãšããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ | Microsoft Learn
https://learn.microsoft.com/ja-jp/sql/relational-databases/partitions/partitioned-tables-and-indexes - CREATE INDEX (Transact-SQL)
https://learn.microsoft.com/ja-jp/sql/t-sql/statements/create-index-transact-sql
-
SQL Server 2012 èªç¿æžã·ãªãŒãº No.19 ããŒã¿ ããŒãã£ã·ã§ã³å ¥é - HTML ç - SQLQuality
http://www.sqlquality.com/Self2012/Self2012_DP/Text/mokuji.html -
èªç¿æžã·ãªãŒãº | SQL Server 2008 R2 / SQL Server 2012
ïŒããŒã¿ããŒã¹ ããŒãã£ã·ã§ã³å ¥é / ããŒã¿ ããŒãã£ã·ã§ã³å ¥éïŒ
Tags: ç§»è¡, ããŒã¿ã¢ã¯ã»ã¹, SQL Server