powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите по секционированию.
6 сообщений из 6, страница 1 из 1
Подскажите по секционированию.
    #39906281
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Есть несекционированая таблица, в которую интенсивно 24/7 идет поставка данных, в данный момент в ней 4 389 359 936 строк.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
CREATE TABLE [dbo].[Posts](
	[Id] [bigint] IDENTITY(4500100100,1) NOT FOR REPLICATION NOT NULL,
	[BlogId] [int] NOT NULL,
	[PersonId] [int] NOT NULL,
	 [nvarchar](4000) NOT NULL,
	[Title] [nvarchar](4000) NOT NULL,
	[PublishDate] [datetime] NULL,
	[Timestamp] [datetime] NULL,
	[cs_Url]  AS (checksum()),
	[UpdateDate] [datetime] NULL,
	[PostContentId] [bigint] NULL,
	[WatchComments] [bit] NULL,
	[CommentsLastUpdated] [datetime] NULL,
	[PlagiarismId] [int] NULL,
	[DuplicateOfId] [int] NULL,
	[repl] [bit] NOT NULL,
	[PostProcessingState_Id] [int] NULL,
	[IsComment] [bit] NOT NULL,
	[cs_Title]  AS (checksum([Title])),
	[CreateDate] [datetime] NULL,
	[IsSpam] [bit] NULL,
	L400]  AS (left(,(400))),
	[MessageType] [int] NULL,
	[LanguageId] [int] NULL,
	[BlogHostId] [int] NULL,
	[BlogHostType] [tinyint] NULL,
	[ParentUrl] [nvarchar](4000) NULL,
	[IsAd] [bit] NULL,
	[CountryId] [int] NULL,
	[RegionId] [int] NULL,
	[AreaId] [int] NULL,
	[CityId] [int] NULL,
	[BlogFollowersNum] [int] NULL,
	[AuthorBlogId] [int] NULL,
	[VisibilityIndex] [float] NULL,
	[BlogInfluenceRate] [int] NULL,
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 [SSD_FG]
) ON [SSD_FG]
GO

ALTER TABLE [dbo].[Posts] ADD  DEFAULT ((0)) FOR [IsComment]
GO

ALTER TABLE [dbo].[Posts] ADD  DEFAULT (getutcdate()) FOR [CreateDate]
GO

ALTER TABLE [dbo].[Posts] ADD  DEFAULT ((0)) FOR [IsSpam]
GO



Мне необходимо ускорить удаление из неё старых данных, простой delete from справляется, но хочется этот процесс ускорить.
Секционирование не применял на практике, но знаю, что ренжировав секции по таймштампу, я могу быстро удалять данные секциями.

Не где в мануалах по секционированию не встречал информации о том, что секционирование может замедлить вставку (на таблице применяются не уникальные индексы), как секционирование относится к индексам, мне тоже пока не особо ясно.

Так же пересоздавать таблицу не хотелось бы, могу ли я создать новые секции на заполненной таблице, пускай и только для новых данных, а старые целиком оставить в секции до сегодняшней даты.

Или может я совершенно не прав в своих суждениях?
...
Рейтинг: 0 / 0
Подскажите по секционированию.
    #39906312
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подскажите по секционированию.
    #39906315
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa
Мне необходимо ускорить удаление из неё старых данных, простой delete from справляется, но хочется этот процесс ускорить.
Секционирование не применял на практике, но знаю, что ренжировав секции по таймштампу, я могу быстро удалять данные секциями.

Не где в мануалах по секционированию не встречал информации о том, что секционирование может замедлить вставку (на таблице применяются не уникальные индексы), как секционирование относится к индексам, мне тоже пока не особо ясно.
Если оставить кластерный ПК по id, то секционирования по таймштампу не получится.
Если сделать ПК по id некластерным, то могут замедлиться запросы.

В такой ситуации я бы сделал секционирование по id, примерно подобрав нужный диапазон значений.

teCa
Так же пересоздавать таблицу не хотелось бы, могу ли я создать новые секции на заполненной таблице, пускай и только для новых данных, а старые целиком оставить в секции до сегодняшней даты.
Есть несколько способов внедрить секционирование, не останавливая работу базы, не лоча таблицу.
Зависит от свободного пространства, версии сиквела, и требований.

Например да, можно всю существующую таблицу разместить в одной большой секции, а новые данные будут добавляться уже в небольшие секции. Оставить обычное удаление, и когда то наступит момент, что можно будет начать удалять секциями.
Это самое простое решение, и самое нетребовательное к ресурсам.
...
Рейтинг: 0 / 0
Подскажите по секционированию.
    #39907460
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
teCa,

Переключаете секцию из секционированной таблицы в несекционированную, а затем, последнюю удаляете

CREATE TABLE PartitionTable (col1 int, col2 char(10))
ON myRangePS1 (col1) ;
GO
CREATE TABLE NonPartitionTable (col1 int, col2 char(10))
ON test2fg ;
GO
ALTER TABLE PartitionTable SWITCH PARTITION 2 TO NonPartitionTable ;
GO
DROP TABLE NonPartitionTable

https://docs.microsoft.com/ru-ru/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
Подскажите по секционированию.
    #39907473
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

Если будете удалять по id, то будет быстро.
Собственно, вам нужно только решить, подходит это поле для определения "старости" данных.
...
Рейтинг: 0 / 0
Подскажите по секционированию.
    #39907533
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

У вас есть возможность организовать окно и перелить эту таблицу в секционированную?

Либо Сделать новую секционированнную и переключиться на неё.

Ещё вы не назвали версию SQL SErver. Начиная с 2016 можно truncate делать партиции.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите по секционированию.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]