Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Влияние типа данных Int на размер таблицы и индекса / 14 сообщений из 14, страница 1 из 1
22.07.2013, 17:21:16
    #38339439
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
Всем доброго!

Есть таблица:
Данные 391.5 МБ
Индекс 564.4 МБ
Всего 955.8 МБ

Сейчас в ней два поля - BigInt и TinyInt.
Индекс PRIMARY 41047072 уник. элементов, по полю BigInt.

Нужно оптимизировать размер, т.е. уменьшить. Есть идея уменьшить за счет смены BigInt на простой Int, у меня данные программно получаются, и я могу изменить программу чтобы она укладывалась в обычный Int при сохранении данных. По моим представлениям (знаком с программированием, а вот с БД не очень) это все равно что перейти с 64 бит на 32 бита. Но меня смущает цифра в скобках, т.е. (BigInt(20), Int(10) и т.п.). Для чего эта цифра? Как на самом деле хранится в базе число? А если я напишу Int(7), как это будет влиять на размер таблицы? MySQL что, умеет промежуточные типы хранить, т.е. не 32 бита на число, а к примеру 18?

Вторая идея по уменьшению веса таблицы - убрать индекс. Его убирать в принципе нельзя, т.к. скорость все таки нужна. Но у меня данные (поле, к-рое PRIMARY) отсортированные, они программно создаются, и уже заранее отсортированы по возрастанию. В моем случае создание базой индекса - просто повторная работа, да еще и забирающая места столько же, сколько сами данные занимают. Если я удалю индекс, база начнет тупо искать перебором?
...
Рейтинг: 0 / 0
22.07.2013, 17:27:13
    #38339455
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
Еще хотел спросить, влияет ли тип индексируемых данных на размер индекса. Если тип станет в два раза меньше, с BigInt(20) на Int(10), индекс тоже в два раза меньше места занимать станет?
...
Рейтинг: 0 / 0
22.07.2013, 17:31:49
    #38339466
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
foggy_hhНо меня смущает цифра в скобках, т.е. (BigInt(20), Int(10) и т.п.). Для чего эта цифра? Как на самом деле хранится в базе число? А если я напишу Int(7), как это будет влиять на размер таблицы? MySQL что, умеет промежуточные типы хранить, т.е. не 32 бита на число, а к примеру 18?Считайте, что эти числа ничего не означают. Размер данных всегда будет соответствовать типу, т.е. BigInt - 8 байт, Int - 4 байта и т.п.
...
Рейтинг: 0 / 0
22.07.2013, 17:32:57
    #38339469
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
foggy_hhЕще хотел спросить, влияет ли тип индексируемых данных на размер индекса. Если тип станет в два раза меньше, с BigInt(20) на Int(10), индекс тоже в два раза меньше места занимать станет?Влияет, но не пропорционально, т.к. помимо собственно значений, в индексе еще хранится информация об его собственной структуре и указатели на записи в таблице.
...
Рейтинг: 0 / 0
22.07.2013, 17:35:01
    #38339470
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
foggy_hhВторая идея по уменьшению веса таблицы - убрать индекс.Какой тип таблицы?
Нужно уменьшить размер хранимых данных или размер читаемых данных?
...
Рейтинг: 0 / 0
22.07.2013, 18:02:28
    #38339522
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
miksoftКакой тип таблицы?
Тип таблиц сейчас посмотрел. Оказалось, что phpMyAdmin на локальном создал по умолчанию InnoDB, а на удаленном сервере MyISAM. Я как раз не мог понять, почему такая разница, на локальном он мне и другой размер таблицы (больший) и размер индекса нулевой выдает, хотя данные те же. Думал, это баг в phpMyAdmin. На сервере, там где MyISAM таблицы, общий размер данных и индекса phpMyAdmin показывает меньше, чем размер самих только данных на InnoDB таблицах.

Мне для задачи нужна быстрая выборка одной записи по одному полю. Как я уже писал, данные в поле, по к-рому идет поиск, уже отсортированы.

miksoftНужно уменьшить размер хранимых данных или размер читаемых данных?
Не понял вопрос. В чем разница? Они у меня все должны быть доступны по запросу.
...
Рейтинг: 0 / 0
22.07.2013, 18:05:03
    #38339528
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
Если имеется ввиду, долговременно хранимые, то таких у меня нет, мне нужно чтобы всегда можно было запрос к ним делать. Долговременно я и дома на диске могу хранить :)
...
Рейтинг: 0 / 0
22.07.2013, 18:15:42
    #38339543
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
foggy_hhmiksoftКакой тип таблицы?
Тип таблиц сейчас посмотрел. Оказалось, что phpMyAdmin на локальном создал по умолчанию InnoDB, а на удаленном сервере MyISAM. Я как раз не мог понять, почему такая разница, на локальном он мне и другой размер таблицы (больший) и размер индекса нулевой выдает, хотя данные те же. Думал, это баг в phpMyAdmin. На сервере, там где MyISAM таблицы, общий размер данных и индекса phpMyAdmin показывает меньше, чем размер самих только данных на InnoDB таблицах.

Мне для задачи нужна быстрая выборка одной записи по одному полю. Как я уже писал, данные в поле, по к-рому идет поиск, уже отсортированы.Я бы предложил в данном случае использовать именно InnoDB, т.к. его первичный ключ - это, фактически, сама таблица (или наоборот). Т.е. нет дополнительных структур. И когда найдено нужное значение в первичном ключе, то тут же рядом лежат и все остальные поля таблицы, за ними не нужно отдельно ходить.
...
Рейтинг: 0 / 0
22.07.2013, 18:19:54
    #38339548
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
foggy_hhmiksoftНужно уменьшить размер хранимых данных или размер читаемых данных?
Не понял вопрос. В чем разница? Они у меня все должны быть доступны по запросу.У многих СУБД, в т.ч. у MySQL есть такое понятие - покрывающий индекс. Если в индекс входят все поля, которые нужны для выполнения какого-то запроса (да еще, желательно, в нужном порядке), то СУБД может не читать саму таблицу вообще, а только индекс. В итоге таблица и индекс хранятся, а читается только индекс.
...
Рейтинг: 0 / 0
22.07.2013, 18:56:50
    #38339598
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
Понятно. Вот пример данных, они очень просты, но их может быть очень много:
...
97689610 1
97689611 1
97689612 1
97689613 1
97689614 1
97689615 1
97689616 1
97689617 1
97689618 1
...

Да, еще важный момент. Возможность записи не нужна, только чтение.

Нашел еще инфу про сжатые MyISAM таблицы, и про движок ARCHIVE. Если они не сильно замедлят выборку, то это было бы неплохо. Я пробовал исходный файл ZIP'ом жать, очень хорошо жмется, до 14 процентов.
...
Рейтинг: 0 / 0
22.07.2013, 22:40:16
    #38339771
krevedko13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
Если жать хотите - вам InnoDB Barracuda получше будет, имхо.

Линки в тему:

http://dba.stackexchange.com/questions/14246/innodb-file-format-barracuda
http://stackoverflow.com/questions/9930556/innodb-table-optimization-w-o-locking-table
http://habrahabr.ru/post/126375/#comment_4163361

Вопрос - а почему встала задача место сэкономить ? Гигабайт это много ?
...
Рейтинг: 0 / 0
23.07.2013, 06:55:05
    #38339878
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
krevedko13,

Гигабайт это не много, но во первых такая таблица будет не одна, а во вторых все это будет работать на дешевом хостинге с SSD, места не очень много предоставлено.
...
Рейтинг: 0 / 0
23.07.2013, 06:56:59
    #38339881
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
За ссылки спасибо!
...
Рейтинг: 0 / 0
23.07.2013, 07:00:21
    #38339883
foggy_hh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние типа данных Int на размер таблицы и индекса
Очередной виток эволюции. Сначала все экономили килобайты, потом перестали. Потом опять начали, т.к. мобилки пошли. Потом опять перестали. Вот сейчас SSD, теперь уже гигабайты экономим, к-рые вроде бы уже перестали :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Влияние типа данных Int на размер таблицы и индекса / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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