powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Неколько вопросов по типам данных.
39 сообщений из 39, показаны все 2 страниц
Неколько вопросов по типам данных.
    #38608202
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите разобраться по некоторым вопросам.
1) Есть параметр, который может принимать 2 положения. Например ТОП товар. Товар может быть ТОПом или нет. Для этого напрашивается тип данных Bit. Можно также использовать TinyInt. Первое весит 1 бит, второе 1 байт. Над вторым можно совершать арифметические операции, над первым нет. Второе можно расширить, если например введут признак например ПремиуиТОП и нужно будет что бы столбец принимал одно из трех значений. Вопрос: Сильно ли будет заметно различие по скорости работы базы данных использование Bit или TinyInt в таких случаях если в базе таблицы с товарами по 10-30 млн данных?
2) Есть товары. Для ключа использую тип данных Int. Вес ячейки 4 байта. Как повлияет на производительность БД если вместо Int будет использоваться Char, Varchar, Nchar, Nvarchar? 1 символ в Char весит 1 байт. Соответственно если тип данных я укажу Char(4) то каждое значение будет весить по 4 байта? Даже если введу единицу? Если ввести в Varchar(4) единицу, она будет весить 4 байта или 1? Как повлияет на скорость работы БД использование Int или Varchar, если тип данных используется для обозначения шестизначного кода? Получается идет сравнение Int и Varchar(6). Как повлияет на скорость работы БД использование Int или Varchar, если тип данных используется для обозначения трехзначного кода? Получается идет сравнение Int и Varchar(3).
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608212
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
3) Как повлияет на производительность БД использование в качестве ключа типа данных Int в сравнении c Uniqueidentifier?
В базе данных около 1ТБ данных. Выполняются различные Selectы. Таблицы по 10-100 млн данных.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608228
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4) Вообще справедливо ли предложение: Чем меньше вес данных, тем быстрее будут происходить вычисления над ними? Или современным компьютерам без разницы 1 байт весит данное или 8?
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608258
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max, "пол-зёрнышка в день - мало, 183 в год - много" (с) м/ф "Дюймовочка".
Встречный вопрос: это реальные проблемы или вопросы от преподавателя? :)
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608281
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max,
Начну не по-порядку:
2. моя практика показала, что разницы между идентификатором целочисленным и varchar - практически нет по производительности.
При этом если идентификаторы большие - то еще и можно получить профит в хранении данных, т.к. [/b]varchar[/b] использует только то количество байт, которое необходимо для хранения данных. Т.е. двузначное число займет два байта, в то время, как тоже самое число в INT все равно 4 байта. Но с точки зрения производительности выборок - прогонял оба варианта, никакой ощутимой разницы не заметил.


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

Так же сортировка по INT и по varchar - это две разные вещи (первая: "1,2,19" во втором случае "1,19,2"). Не знаю нужно ли это вам в ваших кейсах, но сталкивался с такой проблемой - идентификатор varchar а нужна сортировка по возрастанию => потребовалось преобразование в INT, т.к. в данных никто маской не озаботился.

Соответственно, мое мнение - под идентификаторы более приемлемо пользовать именно INT. Меньше будет проблем с верификацией и т.п.

1. Имхо заложите TinyInt если есть перспектива роста. Null никто не отменял. TinyInt - позволит в том числе комбинировать различные признаки (битовой маской) при необходимости.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608284
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое весит 1 бит , второе 1 байт.1. Только в случае, когда их есть 8полей (по биту на поле). И то все равно не нужно будет сначала выделить бит из этого байта.

Строчные типы будут выполняться медленее числовых. Хотя бы потому, что у строк есть понятие сортировка согласно своей кодовой страницы. А Варчары вообще хранятся в отдельной структуре, а не теле записи (в теле ссылка на эту структуру).
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608289
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Реальные, это для меня.
Есть базы данных на сервере. У всех данных есть Uniqueidentifier. У спецификаций, у товаров, у магазинов, договоров и т.д. Так же параллельно есть числовые кода. Я выполняю сначала преобразование данных. (В заказах у Пепси код 111, в заказах 489657, в договорах 7891cfc3-8e42-475e-a854-0019253f8510, я привожу все данные к одним кодам) А затем создаю отчетность из этих данных.
Например есть список магазинов. Он обозначается либо 36-ти значным Uniqueidentifier либо Nvarchar(100). Но это числа от 1 до 600. Можно преобразовать в SmallInt, так как встряли подразделений будет больше 32000. За счет это я хочу увеличить скорость обработки запросов. Вот и интересно, приведет ли это к увеличению быстродействия.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608300
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max,

1. Bit от tinyint по скорости не будет отличаться никак.
2,3 - Int и Varchar, Int и UID - несколько лет назад афаир прям на этом форуме кто-то выкладывал тесты. Вкратце - выигрыш у Int есть, но небольшой (единицы процентов). И это платформозависимо, так что для полной уверенности лучше померяйте сами.
Но в целом Вы зря имхо заморачиваетесь на такой оптимизации, тормоза в 99% случаются не из-за этого.
Что важно - ВСЕГДА первичный ключ и соответствующие внешние делать одного типа, Int так Int, UID так UID.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608313
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max4) Вообще справедливо ли предложение: Чем меньше вес данных, тем быстрее будут происходить вычисления над ними?

Правильно говорить не "вес", а "объём".
Это утверждение в целом не справедливо, поскольку скорость обработки зависит не только от объёма данных. Есть даже раздел в информатике и теории алгоритмов: "Теория сложности вычислений".

1) скорость обработки также зависит от алгоритмов обработки (вычислений);
2) скорость обработки также зависит от аппаратных и программных средств, реализующих алгоритм обработки;

3) при одинаковом алгоритме b]обычно[/b], но не всегда!, чем меньше объём обрабатываемых данных, тем быстрее завершается выполнение этого алгоритма над данными.

Бытовой пример:
1) бытовая мясорубка у меня дома выдавливает за один оборот ручки максимум 15 граммов мяса;
2) кроме того, для любой порции мяса нужно 2 оборота, пока мясо от раструба дойдёт до ножа.

Порция 1) 45 граммов. понадобятся 2 + 3 = 5 оборотов.
Порция 2) 5 граммов. понадобятся 2 + 1 = 3 оборота. (ура)
Порция 3) 15 граммов. понадобятся 2 + 1 = 3 оборота (странно?!:)




Im_MaxИли современным компьютерам без разницы 1 байт весит данное или 8?

Современным компьютерам пока всё без разницы, разницу замечают пользователи. Данное утверждение в целом неверно.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608336
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинIm_Max,
...
Но в целом Вы зря имхо заморачиваетесь на такой оптимизации, тормоза в 99% случаются не из-за этого.
...

О! Вопрос таки практический, пропустил первый ответ от ТС :).
+100500 к Матроскину.

Если вопрос в оптимизации конкретной работающей системы, то нужно идти с практической стороны:
1) какой конкретно функционал "тормозит" больше всего (опередлится с критериями, организовать замеры);
2) в чём его узкое место;
3) как его можно устранить;
4) устранить;
5) проверить, что помогло;
6) подумать, где ещё могут быть схожие узкие места, проверить функционал, при необходимости устранить и в этих местах;
6) удовлетворены ли юзеры? если нет, на шаг (1).

К замечаниям выше дополню к перечню потенциальных узких мест:
- места сравнения Int с [x]Char, где приходится организовывать преобразования для приведения к одному типу данных.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608345
Im_Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо.

Просто поставщик ПО выбрал тип данных Nvarchar из-за того что он предоставляет это ПО разным компаниям. И каждый может по разному присваивать кода. У нас просто используются только цифры. Думал что перейду на Int и будет мне счастье.
В итоге прироста производительности не получу, только бонус в виде свободного места. Плюс с числами легче работать, это к вопросу про упорядочивание.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608359
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, первичные ключи должны быть суррогатными и присваиваться "внутри" системы
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608597
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafИмхо, первичные ключи должны быть суррогатными и присваиваться "внутри" системы
+1
Im_Max, проверь, может ты где-то провтыкал суррогатные ключи в таблицах поставщика ПО?
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608673
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max3) Как повлияет на производительность БД использование в качестве ключа типа данных Int в сравнении c Uniqueidentifier?
В базе данных около 1ТБ данных. Выполняются различные Selectы. Таблицы по 10-100 млн данных.
Uniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608677
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max4) Вообще справедливо ли предложение: Чем меньше вес данных, тем быстрее будут происходить вычисления над ними? Или современным компьютерам без разницы 1 байт весит данное или 8?
вычисления пофиг - узкое место - чтения с диска. Меньше места занимает - меньше чтений, уже плюс
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608860
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak Меньше места занимает - меньше чтений, уже плюс Добавлю меньше места занимает в памяти, меньше места занимает в логе и т.д.

Я встречался с проблемой в SQL Server при использовании char в качестве идентификатора - разработчик этого не осознавал и делал запрос типа
select * from mytable where mykey=123456789
А сервер нет чтобы вернуть ошибку, проводил неявное преобразование типов и делал nonclustered index scan вместо index seek. Ошибку исправили на
select * from mytable where mykey='123456789'
но осадочек остался
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608866
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Ошибку исправили на
select * from mytable where mykey='123456789'
но осадочек осталсяа Оракл что делает?
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608877
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NvarcharУжос. Там могут быть уникодные значения ключей ?????
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608879
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Есть параметр, который может принимать 2 положения. Например ТОП товар. Товар может быть ТОПом или нет. Для этого напрашивается тип данных Bit. Можно также использовать TinyInt. Первое весит 1 бит, второе 1 байт. Над вторым можно совершать арифметические операции, над первым нет. Второе можно расширить, если например введут признак например ПремиуиТОП и нужно будет что бы столбец принимал одно из трех значений.

Вопрос: Сильно ли будет заметно различие по скорости работы базы данных использование Bit или TinyInt в таких случаях если в базе таблицы с товарами по 10-30 млн данных?

Различий в скорости скорее всего не будет вообще. bit всё равно будет скорее всего занимать один байт хранения (только если несколько битовых полей у тебя будет в таблице, тогда 2, 3 и т.д до 8 полей смогут занять только один байт).

Но надо использовать бит. Или boolean или его аналоги.

2) Есть товары. Для ключа использую тип данных Int. Вес ячейки 4 байта. Как повлияет на производительность БД если вместо Int будет использоваться Char, Varchar, Nchar, Nvarchar? 1 символ в Char весит 1 байт. Соответственно если тип данных я укажу Char(4) то каждое значение будет весить по 4 байта?

Никак практически. Длины не будут значительно различаться. Значительно -- это на один или несколько порядков.

Даже если введу единицу? Если ввести в Varchar(4) единицу, она будет весить 4 байта или 1? Как повлияет на скорость работы БД использование Int или Varchar, если тип данных используется для обозначения шестизначного кода? Получается идет сравнение Int и Varchar(6).

Ты не там ищешь поводы для борьбы за производительность.
При проектировании БД о производительности вообще думать не нужно.
А о доменной целостности поля.
Если это бит, булева величина -- надо брать бит.
Если это символьный код -- надо брать char/varchar.
Если это идентификатор-число -- брать int/long.
Если дата -- дату. Время -- время. И так далее.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608886
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max4) Вообще справедливо ли предложение: Чем меньше вес данных, тем быстрее будут происходить вычисления над ними? Или современным компьютерам без разницы 1 байт весит данное или 8?

Справедливо. Но тебе надо при этом разницу в длине данных иметь существенную. int/GUID -- разница в 2 или 4 раза только лишь.
Т.е. в твоём случае разницу ты можешь и заметить, но она не будет такой уж существенной.

Тип данных надо выбирать исходя из требований к ПО. Нужна глобальная уникальность -- GUID. Не нужна --- int.
Естественно, тип данных должен быть минимально большим для представления данного поля. Но это не из соображений производительности, а просто из соображений экономии места и здравой логики.

P.S. Кстати, вот: http://www.sql.ru/forum/1019530/chislovoy-id-ili-guid
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38608892
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakIm_Max3) Как повлияет на производительность БД использование в качестве ключа типа данных Int в сравнении c Uniqueidentifier?
В базе данных около 1ТБ данных. Выполняются различные Selectы. Таблицы по 10-100 млн данных.
Uniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно.
Тип данных Uniqueidentifier не может быть или не быть мототонно возрастающим. Не монотонно возрастающей может быть
функция, вызывающая определенный API операционки - но это несколько другой вопрос, к типу данных имеющий косвенное отношение.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609101
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakUniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно.

Почему?
Просто я не знаю, что мне лучше использовать для суррогатного ключа: Uniqueidentifier или SEQUENCE?
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609189
NetObserver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_Max1) Есть параметр, который может принимать 2 положения. Например ТОП товар. Товар может быть ТОПом или нет. Для этого напрашивается тип данных Bit. Можно также использовать TinyInt. Первое весит 1 бит, второе 1 байт.
Никогда не понимал людей "экономящих" на битах
Не приходило в голову, что на диске 1 бит будет хранится как 1 байт как минимум?
А про выравнивание памяти слышали? В оперативной памяти даже байт будет хранится как 4 байта. Ну и где выигрыш?

PS Сейчас работаю с базой живущей с 2009 года. Тогда разработчики тоже "экономили", некоторые справочники(их ID) имеют размер TyniInt. И уже переросли свой размер. Могу сказать, что это знатный гемморой - во всех SP искать поле и менять тип.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609194
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[offtopic]
NetObserver Могу сказать, что это знатный гемморой - во всех SP искать поле и менять типВ свое время занимаясь тем же, я нашел
http://www.red-gate.com/products/sql-development/sql-search/
[/offtopic]
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #38609203
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Im_MaxЗдравствуйте. Помогите разобраться по некоторым вопросам.
1) Есть параметр, который может принимать 2 положения. Например ТОП товар. Товар может быть ТОПом или нет. Для этого напрашивается тип данных Bit. Можно также использовать TinyInt. Первое весит 1 бит, второе 1 байт. Над вторым можно совершать арифметические операции, над первым нет. Второе можно расширить, если например введут признак например ПремиуиТОП и нужно будет что бы столбец принимал одно из трех значений. Вопрос: Сильно ли будет заметно различие по скорости работы базы данных использование Bit или TinyInt в таких случаях если в базе таблицы с товарами по 10-30 млн данных?

2) Есть товары. Для ключа использую тип данных Int. Вес ячейки 4 байта. Как повлияет на производительность БД если вместо Int будет использоваться Char, Varchar, Nchar, Nvarchar? 1 символ в Char весит 1 байт. Соответственно если тип данных я укажу Char(4) то каждое значение будет весить по 4 байта? Даже если введу единицу? Если ввести в Varchar(4) единицу, она будет весить 4 байта или 1? Как повлияет на скорость работы БД использование Int или Varchar, если тип данных используется для обозначения шестизначного кода? Получается идет сравнение Int и Varchar(6). Как повлияет на скорость работы БД использование Int или Varchar, если тип данных используется для обозначения трехзначного кода? Получается идет сравнение Int и Varchar(3).
1. Индекс по полю типа бит вещь очень неизбирательная, поэтому при выборке сканировать придется всю таблицу. Возможно, более удачный вариант завести отдельную таблицу что-то вроде Top(GoodsID int PK), в которую складывать идентификаторы топовых товаров, если их не очень много, зависит от нескольких причин. С потолка можно сказать про не более 30%, зависит от количества операций чтения данных.
2. Символьные данные при сравнении в операциях поиска и фильтрации обычно используют правила сортировки, что в целом эти операции замедляет. Кроме того, строки, как правило, разной длины, что тоже сказывается на сравнении из-за способа хранения, так как фиксированое поле и переменное хранятся по-разному, обычно это описывается в документации к серверу. Лучше хранить в фиксированом, но тогда может быть неоптимальный объём хранения таковых данных. Поэтому, если уж решили использовать, то при многих оперциях полезно указывать опцией, что при сравнение использовать бинарную сортировку. А вообще правильно сказали выше, тип поля должен зависеть не от того, что меньше, а от того, каким он должен быть. Если в качестве кода использутся только цифры, то разумно использовать целочисленный тип, если же могут быть любые другие символы, то символьный, а если ещё и диапазон символов превышает ASCII, то от Unicode никуда не денешься. В общем, нюансов много. В любом случае, типы должны совпадать, чтобы серверу не приходилось "на лету" выполнять конвертацию данных, это, как правило, катастрофически сказывается на производительности.
Есть очень неплохая книга для практиков, рекомендуется к прочтению. Авторы сделали много разных интересных экспериментов на ряде самых известных RDBMS.
...
Рейтинг: 0 / 0
Неколько вопросов по типам данных.
    #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
39 сообщений из 39, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Неколько вопросов по типам данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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