Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вертикальное разбиение таблицы  [new]
4k
Member

Откуда:
Сообщений: 16
Доброй ночи, уважаемые гуру SQL Server.
У меня такой вопрос, который не дает покоя.

Допустим, есть одна таблица(30 полей) с примерно 10 млн записей. Размер одной записи в среднем - 2 КБ.
В таблицу активно идет вставка и чтение, причем при вставке заполняются всего 10 полей(и далее не меняются). Остальные 20 полей активно изменяются уже в процессе работы с таблицей. При чтении необходимо вернуть все 30 полей. Индексы присутствуют только на первых 10 полях.

Имеет ли смысл разбивать таблицу на две с отношением один-к-одному?

Поясню свою логику: при таком подходе операции обновления 20 столбцов из второй таблицы никак не сказываются на операциях вставки в первую. Однако, операции чтения заметно проседает из-за соединения.

Кто сталкивался, поделитесь опытом.
30 май 13, 00:24    [14367571]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
Гость333
Member

Откуда:
Сообщений: 3683
4k
при таком подходе операции обновления 20 столбцов из второй таблицы никак не сказываются на операциях вставки в первую

А в случае одной таблицы как влияет обновление 20 столбцов на операции вставки?
30 май 13, 02:41    [14367682]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
И второй вопрос:
4k
У меня такой вопрос, который не дает покоя.
А в чём проблема конкретно, кроме бессонницы?

Может вы всё таки от таких тяжёлых дум посмотрите планы, данных 3-х видов операций, их блокировок, проанализируете их статистику и т.д. и т.п. ?
30 май 13, 09:30    [14368132]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
4k
Поясню свою логику: при таком подходе операции обновления 20 столбцов из второй таблицы никак не сказываются на операциях вставки в первую. Однако, операции чтения заметно проседает из-за соединения.

Все логично. В чем проблема ?
30 май 13, 09:31    [14368139]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
Дэр Пароль
Member

Откуда: Moscow
Сообщений: 226
4k,

теоретически есть такой способ работы с широкими таблицами: разбить ее на две (редко- и часто-меняющиеся данные), объединить по общему ключу один-к-одному, и расположить в разных файловых группах на разных дисках.
30 май 13, 10:19    [14368357]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Дэр Пароль
4k,

теоретически есть такой способ работы с широкими таблицами: разбить ее на две (редко- и часто-меняющиеся данные), объединить по общему ключу один-к-одному, и расположить в разных файловых группах на разных дисках.
На надо вот этого тут писать. Оно не по делу совершенно.
Всегда найдётся задача с нестандартными решениями, а тут оно никаким боком.
30 май 13, 10:34    [14368435]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34621
4k,

Таблицы в любом случае разбиваются на части или сливаются в соответствии с логикой предметной области, а не из-за каких либо соображений по производительности.
Ответ — однозначно нет.
30 май 13, 11:08    [14368701]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
Дэр Пароль
Member

Откуда: Moscow
Сообщений: 226
MasterZiv,

логика-логикой, а физика-физикой. В решениях data warehouse как раз из соображений производительности одну "логическую" таблицу могут разбить на несколько "физических", и объединить все во view.

Mnior,

согласно теории, этим способом можно получить скоростной merge-join для выборки данных.
30 май 13, 11:31    [14368875]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34621
автор
логика-логикой, а физика-физикой. В решениях data warehouse как раз из соображений производительности одну "логическую" таблицу могут разбить на несколько "физических", и объединить все во view.


Это DWH у топикстартера ? Конечно же нет, в DWN не бывает
"активно идет вставка и чтение, причем при вставке заполняются всего 10 полей(и далее не меняются). Остальные 20 полей активно изменяются уже в процессе работы с таблицей. "
30 май 13, 13:23    [14369747]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
HoBTID
Member

Откуда:
Сообщений: 929
4k, а вы скрипт таблицы приведите, возможно ее просто надо нормализовать.
30 май 13, 13:45    [14369916]     Ответить | Цитировать Сообщить модератору
 Re: вертикальное разбиение таблицы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Дэр Пароль
согласно теории, этим способом можно получить скоростной merge-join для выборки данных.
Не получите. Каждый индекс имеет свой порядок.
Но согласен, можно вешать индексы на две таблы. Но практического смысла нет в данной конструкции.

Вы высасываете проблему из пальца.
О Боже. Данные вставляются и изменяются в одной и тоже базе!!!
Надо срочно разделить все данные по разным серверам. Побитово.
Паника.

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

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

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

КО.
30 май 13, 23:33    [14372993]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить