|
|
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Помогите разобраться по некоторым вопросам. 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). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 11:47 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
3) Как повлияет на производительность БД использование в качестве ключа типа данных Int в сравнении c Uniqueidentifier? В базе данных около 1ТБ данных. Выполняются различные Selectы. Таблицы по 10-100 млн данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 11:51 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
4) Вообще справедливо ли предложение: Чем меньше вес данных, тем быстрее будут происходить вычисления над ними? Или современным компьютерам без разницы 1 байт весит данное или 8? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 12:00 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Im_Max, "пол-зёрнышка в день - мало, 183 в год - много" (с) м/ф "Дюймовочка". Встречный вопрос: это реальные проблемы или вопросы от преподавателя? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 12:19 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
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 - позволит в том числе комбинировать различные признаки (битовой маской) при необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 12:30 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Первое весит 1 бит , второе 1 байт.1. Только в случае, когда их есть 8полей (по биту на поле). И то все равно не нужно будет сначала выделить бит из этого байта. Строчные типы будут выполняться медленее числовых. Хотя бы потому, что у строк есть понятие сортировка согласно своей кодовой страницы. А Варчары вообще хранятся в отдельной структуре, а не теле записи (в теле ссылка на эту структуру). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 12:31 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Реальные, это для меня. Есть базы данных на сервере. У всех данных есть Uniqueidentifier. У спецификаций, у товаров, у магазинов, договоров и т.д. Так же параллельно есть числовые кода. Я выполняю сначала преобразование данных. (В заказах у Пепси код 111, в заказах 489657, в договорах 7891cfc3-8e42-475e-a854-0019253f8510, я привожу все данные к одним кодам) А затем создаю отчетность из этих данных. Например есть список магазинов. Он обозначается либо 36-ти значным Uniqueidentifier либо Nvarchar(100). Но это числа от 1 до 600. Можно преобразовать в SmallInt, так как встряли подразделений будет больше 32000. За счет это я хочу увеличить скорость обработки запросов. Вот и интересно, приведет ли это к увеличению быстродействия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 12:33 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Im_Max, 1. Bit от tinyint по скорости не будет отличаться никак. 2,3 - Int и Varchar, Int и UID - несколько лет назад афаир прям на этом форуме кто-то выкладывал тесты. Вкратце - выигрыш у Int есть, но небольшой (единицы процентов). И это платформозависимо, так что для полной уверенности лучше померяйте сами. Но в целом Вы зря имхо заморачиваетесь на такой оптимизации, тормоза в 99% случаются не из-за этого. Что важно - ВСЕГДА первичный ключ и соответствующие внешние делать одного типа, Int так Int, UID так UID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 12:40 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
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? Современным компьютерам пока всё без разницы, разницу замечают пользователи. Данное утверждение в целом неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 12:45 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинIm_Max, ... Но в целом Вы зря имхо заморачиваетесь на такой оптимизации, тормоза в 99% случаются не из-за этого. ... О! Вопрос таки практический, пропустил первый ответ от ТС :). +100500 к Матроскину. Если вопрос в оптимизации конкретной работающей системы, то нужно идти с практической стороны: 1) какой конкретно функционал "тормозит" больше всего (опередлится с критериями, организовать замеры); 2) в чём его узкое место; 3) как его можно устранить; 4) устранить; 5) проверить, что помогло; 6) подумать, где ещё могут быть схожие узкие места, проверить функционал, при необходимости устранить и в этих местах; 6) удовлетворены ли юзеры? если нет, на шаг (1). К замечаниям выше дополню к перечню потенциальных узких мест: - места сравнения Int с [x]Char, где приходится организовывать преобразования для приведения к одному типу данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 13:00 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо. Просто поставщик ПО выбрал тип данных Nvarchar из-за того что он предоставляет это ПО разным компаниям. И каждый может по разному присваивать кода. У нас просто используются только цифры. Думал что перейду на Int и будет мне счастье. В итоге прироста производительности не получу, только бонус в виде свободного места. Плюс с числами легче работать, это к вопросу про упорядочивание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 13:03 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Имхо, первичные ключи должны быть суррогатными и присваиваться "внутри" системы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 13:07 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
NafИмхо, первичные ключи должны быть суррогатными и присваиваться "внутри" системы +1 Im_Max, проверь, может ты где-то провтыкал суррогатные ключи в таблицах поставщика ПО? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 14:53 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Im_Max3) Как повлияет на производительность БД использование в качестве ключа типа данных Int в сравнении c Uniqueidentifier? В базе данных около 1ТБ данных. Выполняются различные Selectы. Таблицы по 10-100 млн данных. Uniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 15:36 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Im_Max4) Вообще справедливо ли предложение: Чем меньше вес данных, тем быстрее будут происходить вычисления над ними? Или современным компьютерам без разницы 1 байт весит данное или 8? вычисления пофиг - узкое место - чтения с диска. Меньше места занимает - меньше чтений, уже плюс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 15:37 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Ivan Durak Меньше места занимает - меньше чтений, уже плюс Добавлю меньше места занимает в памяти, меньше места занимает в логе и т.д. Я встречался с проблемой в SQL Server при использовании char в качестве идентификатора - разработчик этого не осознавал и делал запрос типа select * from mytable where mykey=123456789 А сервер нет чтобы вернуть ошибку, проводил неявное преобразование типов и делал nonclustered index scan вместо index seek. Ошибку исправили на select * from mytable where mykey='123456789' но осадочек остался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 17:36 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
SERG1257Ошибку исправили на select * from mytable where mykey='123456789' но осадочек осталсяа Оракл что делает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 17:41 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
NvarcharУжос. Там могут быть уникодные значения ключей ????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 17:48 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
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. Если дата -- дату. Время -- время. И так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 17:49 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Im_Max4) Вообще справедливо ли предложение: Чем меньше вес данных, тем быстрее будут происходить вычисления над ними? Или современным компьютерам без разницы 1 байт весит данное или 8? Справедливо. Но тебе надо при этом разницу в длине данных иметь существенную. int/GUID -- разница в 2 или 4 раза только лишь. Т.е. в твоём случае разницу ты можешь и заметить, но она не будет такой уж существенной. Тип данных надо выбирать исходя из требований к ПО. Нужна глобальная уникальность -- GUID. Не нужна --- int. Естественно, тип данных должен быть минимально большим для представления данного поля. Но это не из соображений производительности, а просто из соображений экономии места и здравой логики. P.S. Кстати, вот: http://www.sql.ru/forum/1019530/chislovoy-id-ili-guid ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 17:55 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Ivan DurakIm_Max3) Как повлияет на производительность БД использование в качестве ключа типа данных Int в сравнении c Uniqueidentifier? В базе данных около 1ТБ данных. Выполняются различные Selectы. Таблицы по 10-100 млн данных. Uniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно. Тип данных Uniqueidentifier не может быть или не быть мототонно возрастающим. Не монотонно возрастающей может быть функция, вызывающая определенный API операционки - но это несколько другой вопрос, к типу данных имеющий косвенное отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 17:59 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Ivan DurakUniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно. Почему? Просто я не знаю, что мне лучше использовать для суррогатного ключа: Uniqueidentifier или SEQUENCE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 23:12 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Im_Max1) Есть параметр, который может принимать 2 положения. Например ТОП товар. Товар может быть ТОПом или нет. Для этого напрашивается тип данных Bit. Можно также использовать TinyInt. Первое весит 1 бит, второе 1 байт. Никогда не понимал людей "экономящих" на битах Не приходило в голову, что на диске 1 бит будет хранится как 1 байт как минимум? А про выравнивание памяти слышали? В оперативной памяти даже байт будет хранится как 4 байта. Ну и где выигрыш? PS Сейчас работаю с базой живущей с 2009 года. Тогда разработчики тоже "экономили", некоторые справочники(их ID) имеют размер TyniInt. И уже переросли свой размер. Могу сказать, что это знатный гемморой - во всех SP искать поле и менять тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 01:22 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
[offtopic] NetObserver Могу сказать, что это знатный гемморой - во всех SP искать поле и менять типВ свое время занимаясь тем же, я нашел http://www.red-gate.com/products/sql-development/sql-search/ [/offtopic] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 01:36 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 02:43 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Сравнил на примере. Создал таблицу с 10 млн данных. В таком формате: КодПодразделенияКодТовараКол-во100100100100101501001027510110050......... И есть справочник подразделений в формате: КодПодразделенияЮридическоеЛицо100 Компания1101Копания1102Компания1103Компания2...... И создал селект: Код: sql 1. 2. 3. 4. Присваивал КодПодразделения следующие форматы в обоих таблицах: 1. SmallInt 2. Int 3. Nvarchar (100) В итого получил по мегабайтам таблица 1: 1. 441,3 Мб 2. 463,5 Мб 3. 521,1 Мб По скорости выполнения Selecta 1. 5 сек 2. 5 сек 3. 13 сек Воспользуюсь советом, которые многие давали. Буду использовать тот формат данных, который больше всего подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 06:13 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Индексы были на таблицах? Если да, то каковы размеры индексов в каждом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 09:22 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Pulsar_pIvan DurakUniqueidentifier не монотонно возрастающий - это сильно плохо для индексов. А для кластреного вообще убийственно. Почему? Просто я не знаю, что мне лучше использовать для суррогатного ключа: Uniqueidentifier или SEQUENCE? что почему???? почему плохо? - сплит страниц постоянный у индекса. да вот и пример: http://toster.ru/q/22959 авторВообще говоря использовать uniqueidentifier'а в качестве Primary Key плохая затея. Говорю это из своего опыта. Когда проект только начинался мы бездумно сделали все PK c типом uniqueidentifier, и через год, когда количество записей стало исчисляться миллионами, база данных начал непонятно тупить. Тогда мы узнали что такое фрагментация индексов. Фрагментация кластерного индекса очень сильно замедляет вставку. Говоря о выборке, банальные join'ы 100 на 100 записей стали медленными, потому что серверу надо делать множество сиков на диске для перехода к нужной записи. И не говорите о плохих индексах, в данном случае мы выжали всё что могли, и именно сики стали головной болью. Перенос огромной базы на SSD тоже на самая безопасная операция. Так уже больше года мы потихоньку меняем старые Guid'ы на int/bigint и с болью вспоминаем то неосмотрительное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 10:54 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, Спасибо за разъяснение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 11:23 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
SERG1257Ivan Durak Меньше места занимает - меньше чтений, уже плюс Добавлю меньше места занимает в памяти, меньше места занимает в логе и т.д. Не согласен. В отрыве от алгоритма обработки - некорректно. Зачем тогда индексы создавать? По вашей логике, получается, что есть таблица с данными, без индексов она будет меньше места занимать на диске. Ошибка в переходе от "меньше места занимает" к выводу "меньше чтений". Количество чтений зависит от алгоритма обработки тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 13:34 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
АнатоЛой Не согласен. В отрыве от алгоритма обработки - некорректно. Зачем тогда индексы создавать? По вашей логике, получается, что есть таблица с данными, без индексов она будет меньше места занимать на диске.Я имел ввиду что каждый лишний байт на странице данных занимает место в буферном кэше, индексах, логе, бакапах, тестовых клонах, их бакапов и так далее. Насколько это существенно, как и алгоритмы обработки это совсем другая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 17:46 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
SERG1257АнатоЛой Не согласен. В отрыве от алгоритма обработки - некорректно. Зачем тогда индексы создавать? По вашей логике, получается, что есть таблица с данными, без индексов она будет меньше места занимать на диске.Я имел ввиду что каждый лишний байт на странице данных занимает место в буферном кэше, индексах, логе, бакапах, тестовых клонах, их бакапов и так далее. Насколько это существенно, как и алгоритмы обработки это совсем другая история. Вы зацикливаете определение само на себя :). "Лишний" этот байт или нет - какое-то неявное ваше умозаключение. "Лишний" ли этот байт можно определить только тогда, когда можно сказать, что без этого байта система будет работать (хранить и обрабатывать ) данные не хуже (в том числе - не медленнее)... Опять возвращаемся к алгоритмам обработки :) (и критериям: что такое "хуже" в конкретном случае). Пример: тип данных char(3) сэкономит 1 байт при хранении на каждой записи, но при этом сожрёт сколько-то процессорного время, если в процессе обработки понадобится часто приводить значения к типу int (такой тип данных у ключа в связанной таблице, сортировать нужно по числовым значениям и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 18:44 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
ларёчники, на 1ТБ данных на символьных ключах перерасход дорогостоящего дискового пространства будет нешуточный, тормоза поимеете. Срочно предупреждать бизнес, о том что непрофессионалы закладывают мину, которая года через 2 рванет при бурном росте бизнеса, в то время и без того недетские задачи придется решать. Читать буквари! Кимбаллом уже 1000 раз разжевывалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 22:00 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Ищите, читайте статьи и главы про data sizing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 22:02 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
NetObserverPS Сейчас работаю с базой живущей с 2009 года. Тогда разработчики тоже "экономили", некоторые справочники(их ID) имеют размер TyniInt. И уже переросли свой размер. Могу сказать, что это знатный гемморой - во всех SP искать поле и менять тип. Потому надо в SP проще написать Код: plsql 1. и не заморачиваться с изменением типов у полей таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 08:43 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
авторгемморой - во всех SP искать поле и менять тип. Менять надо только тип у параметров и зависимых переменных, не ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 10:28 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Ivan Durakпочему плохо? - сплит страниц постоянный у индекса. да вот и пример: http://toster.ru/q/22959 Есть и обратная сторона медали - если ключи формируются из монотонно возрастающей последовательности то, при высокой конкурентности вставок, происходит борьба за модификацию одной и той же страницы индекса. Так что выбирать оптимальный способ формирования ключей надо исходя из задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 16:54 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
Mr.FontaineПотому надо в SP проще написать Код: plsql 1. и не заморачиваться с изменением типов у полей таблиц Спасибо, я уже понял что Вы ораклист только моя база на MS SQL LSVМенять надо только тип у параметров и зависимых переменных, не ? Да, но если таких SP\триггеров с полсотни - вспоминаешь экономного разработчика душевными словами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2014, 00:47 |
|
||
|
Неколько вопросов по типам данных.
|
|||
|---|---|---|---|
|
#18+
On 25.04.2014 01:47, NetObserver wrote: > Да, но если таких SP\триггеров с полсотни - вспоминаешь экономного > разработчика душевными словами В MSSQL есть домены, их и надо было использовать. Хотя, переопределять домен -- то ещё удовольствие, но хотя бы не надо текст процедур править. Достаточно удалить все использующие домен процедуры, таблицы, view, потом поменять домен, потом пересоздать все удалённые объекты. И тем не менее, неправильный выбор домена -- очень тяжкая ошибка проектирования, потом её очень трудно исправлять, с этим нельзя не согласится. И в Oracle тоже. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2014, 17:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1540909]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 529ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...