powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Неколько вопросов по типам данных.
14 сообщений из 39, страница 2 из 2
Неколько вопросов по типам данных.
    #38609220
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сравнил на примере.
Создал таблицу с 10 млн данных. В таком формате:
КодПодразделенияКодТовараКол-во100100100100101501001027510110050.........
И есть справочник подразделений в формате:
КодПодразделенияЮридическоеЛицо100 Компания1101Копания1102Компания1103Компания2......

И создал селект:
Код: sql
1.
2.
3.
4.
SELECT Таблица2.ЮридическоеЛицо, Sum(Таблица1.Кол-во)
FROM Таблица1
INNER JOIN Таблица2 ON Таблица1.КодПодразделение = Таблица2.КодПодразделения
GROUP By Таблица2.ЮридическоеЛицо;



Присваивал КодПодразделения следующие форматы в обоих таблицах:
1. SmallInt
2. Int
3. Nvarchar (100)

В итого получил по мегабайтам таблица 1:
1. 441,3 Мб
2. 463,5 Мб
3. 521,1 Мб

По скорости выполнения Selecta
1. 5 сек
2. 5 сек
3. 13 сек

Воспользуюсь советом, которые многие давали. Буду использовать тот формат данных, который больше всего подходит.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609324
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индексы были на таблицах?
Если да, то каковы размеры индексов в каждом случае?
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609465
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pIvan DurakUniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно.

Почему?
Просто я не знаю, что мне лучше использовать для суррогатного ключа: Uniqueidentifier или SEQUENCE?
что почему????
почему плохо? - сплит страниц постоянный у индекса.

да вот и пример:
http://toster.ru/q/22959
авторВообще говоря использовать uniqueidentifier'а в качестве Primary Key плохая затея. Говорю это из своего опыта. Когда проект только начинался мы бездумно сделали все PK c типом uniqueidentifier, и через год, когда количество записей стало исчисляться миллионами, база данных начал непонятно тупить. Тогда мы узнали что такое фрагментация индексов. Фрагментация кластерного индекса очень сильно замедляет вставку. Говоря о выборке, банальные join'ы 100 на 100 записей стали медленными, потому что серверу надо делать множество сиков на диске для перехода к нужной записи. И не говорите о плохих индексах, в данном случае мы выжали всё что могли, и именно сики стали головной болью. Перенос огромной базы на SSD тоже на самая безопасная операция. Так уже больше года мы потихоньку меняем старые Guid'ы на int/bigint и с болью вспоминаем то неосмотрительное решение.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609504
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak,
Спасибо за разъяснение.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609826
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Ivan Durak Меньше места занимает - меньше чтений, уже плюс Добавлю меньше места занимает в памяти, меньше места занимает в логе и т.д.

Не согласен. В отрыве от алгоритма обработки - некорректно.
Зачем тогда индексы создавать? По вашей логике, получается, что есть таблица с данными, без индексов она будет меньше места занимать на диске.
Ошибка в переходе от "меньше места занимает" к выводу "меньше чтений".
Количество чтений зависит от алгоритма обработки тоже.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38610325
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой Не согласен. В отрыве от алгоритма обработки - некорректно.
Зачем тогда индексы создавать? По вашей логике, получается, что есть таблица с данными, без индексов она будет меньше места занимать на диске.Я имел ввиду что каждый лишний байт на странице данных занимает место в буферном кэше, индексах, логе, бакапах, тестовых клонах, их бакапов и так далее.
Насколько это существенно, как и алгоритмы обработки это совсем другая история.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38610382
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257АнатоЛой Не согласен. В отрыве от алгоритма обработки - некорректно.
Зачем тогда индексы создавать? По вашей логике, получается, что есть таблица с данными, без индексов она будет меньше места занимать на диске.Я имел ввиду что каждый лишний байт на странице данных занимает место в буферном кэше, индексах, логе, бакапах, тестовых клонах, их бакапов и так далее.
Насколько это существенно, как и алгоритмы обработки это совсем другая история.

Вы зацикливаете определение само на себя :).
"Лишний" этот байт или нет - какое-то неявное ваше умозаключение.

"Лишний" ли этот байт можно определить только тогда, когда можно сказать, что без этого байта система будет работать (хранить и обрабатывать ) данные не хуже (в том числе - не медленнее)...
Опять возвращаемся к алгоритмам обработки :) (и критериям: что такое "хуже" в конкретном случае).

Пример: тип данных char(3) сэкономит 1 байт при хранении на каждой записи, но при этом сожрёт сколько-то процессорного время, если в процессе обработки понадобится часто приводить значения к типу int (такой тип данных у ключа в связанной таблице, сортировать нужно по числовым значениям и т.п.).
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38611852
Фотография ssas12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ларёчники,
на 1ТБ данных на символьных ключах перерасход дорогостоящего дискового пространства будет нешуточный, тормоза поимеете.
Срочно предупреждать бизнес, о том что непрофессионалы закладывают мину, которая года через 2 рванет при бурном росте бизнеса, в то время и без того недетские задачи придется решать.
Читать буквари! Кимбаллом уже 1000 раз разжевывалось
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38611854
Фотография ssas12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите, читайте статьи и главы про data sizing
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38611982
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NetObserverPS Сейчас работаю с базой живущей с 2009 года. Тогда разработчики тоже "экономили", некоторые справочники(их ID) имеют размер TyniInt. И уже переросли свой размер. Могу сказать, что это знатный гемморой - во всех SP искать поле и менять тип.
Потому надо в SP проще написать
Код: plsql
1.
v_myvariable table.column%type;


и не заморачиваться с изменением типов у полей таблиц
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38612071
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторгемморой - во всех SP искать поле и менять тип. Менять надо только тип у параметров и зависимых переменных, не ?
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38612612
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakпочему плохо? - сплит страниц постоянный у индекса.

да вот и пример:
http://toster.ru/q/22959
Есть и обратная сторона медали - если ключи формируются из монотонно возрастающей последовательности то, при высокой конкурентности вставок, происходит борьба за модификацию одной и той же страницы индекса. Так что выбирать оптимальный способ формирования ключей надо исходя из задачи.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38625264
NetObserver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineПотому надо в SP проще написать
Код: plsql
1.
v_myvariable table.column%type;


и не заморачиваться с изменением типов у полей таблиц
Спасибо, я уже понял что Вы ораклист
только моя база на MS SQL

LSVМенять надо только тип у параметров и зависимых переменных, не ?
Да, но если таких SP\триггеров с полсотни - вспоминаешь экономного разработчика душевными словами
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38626114
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 25.04.2014 01:47, NetObserver wrote:

> Да, но если таких SP\триггеров с полсотни - вспоминаешь экономного
> разработчика душевными словами

В MSSQL есть домены, их и надо было использовать.
Хотя, переопределять домен -- то ещё удовольствие, но хотя бы не надо
текст процедур править. Достаточно удалить все использующие домен
процедуры, таблицы, view, потом поменять домен, потом пересоздать все
удалённые объекты.

И тем не менее, неправильный выбор домена -- очень тяжкая ошибка
проектирования, потом её очень трудно исправлять, с этим нельзя не
согласится. И в Oracle тоже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Неколько вопросов по типам данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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