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

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.01.2018, 18:48
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Добрый день всем. MySQL 5.6 Есть OLTP с-ма с 200+ таблицами ПК у таблиц bigint(20) В БД куча FK на PK. Стал вопрос переделать все ПК на int ( реально не надо bigint там даже по большим таблицам - ~ 10 млн максимал. id ) Дамп БД 20 гиг и БД растет в послед. время за 3 месяца - удвоение. заказчик надеется что это уменьшит размер и перфоманс ускорит. Пока надо сделать эксперимент на тест.енве Сделал простой тест на 2 таблицах - типы для FK должны быть одинаковы. т.е вначале надо дропать FK ( и индексы ? или ) с чайлдовых таблиц а потом менеять тип в головных. 1?) Какие могут быть отриц. последствия ? 2?) Надо как то снять готоыве FK может у кого есть готовый скрпит или ссылка снять готовые FK Ясно что information_schema.TABLE_CONSTRAINTS + другие 3?) При дропе FK с чайлдовых таблиц надо убирать индекс или нет ? ALTER TABLE <table1> CHANGE COLUMN id1 id1 int будет ли разница в скорости выполнения при наличии/отстувтия индекса ? (тут есть тонкости что в 95% случая имя FK совпадает с именем индекса но вот в оставшихся 5% нет ) 4) Как померить потенц. выгоду - посчитать дельту между размерами старой и новой БД ? PS Обычно DDL наооборт в сторону увеличения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2018, 19:12
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
автор4) Как померить потенц. выгоду - посчитать дельту между размерами старой и новой БД ? (big)INT в mysql занимает сколько занимает, а не максимальный размер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2018, 19:50
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
ScareCrow(big)INT в mysql занимает сколько занимает, а не максимальный размер. А документация считает иначе. Гулин Федорзаказчик надеется что это уменьшит размер и перфоманс ускорит. Размер? Ну да, уменьшит... немножко так... совсем немножко... причём это уменьшение быстро потеряется среди разброса процента заполнения блока. Дурь, короче. Перформанс? Если есть индексы - напрасные надежды, практически та же история, что и с размером, только процент немного больше. Если их нет - тоже дурь. Гулин ФедорПри дропе FK с чайлдовых таблиц надо убирать индекс или нет ? Нет. Гулин ФедорКак померить потенц. выгоду - посчитать дельту между размерами старой и новой БД ?Никак. Вернее, как ни считай, всё одно получишь какую-то цифирь в попугаях, которую неизвестно к какой заднице приложить. Проще с потолка взять - достоверность та же, но мерить и считать ничего не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2018, 20:08
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Выгода будет 8-4=4 байта на каждую запись каждой таблицы и индекса, как минимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2018, 20:33
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
bigint( 20 ) а что такое 20 в этом случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2018, 20:36
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Гулин Федорbigint( 20 ) а что такое 20 в этом случае ? Количество ОТОБРАЖАЕМЫХ знаков. https://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2018, 22:09
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Гулин Федорbigint( 20 ) а что такое 20 в этом случае ?считайте, что ничего. Это просто 8-байтовое целое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.01.2018, 18:01
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Нарисовал генерацию скрпитов FK нашел здесь http://blog.mclaughlinsoftware.com/2014/03/17/capture-mysql-foreign-keys/ SELECT sql_statement INTO OUTFILE 'd:/05_fk_recreate.sql' FIELDS TERMINATED BY '\r\n' LINES TERMINATED BY '\r\n' FROM tmp_FK_create про @@secure_file_priv прочитал дожено быть пустым - елси нет то писать можно только в эту директорию 1?) можно ли в скритах склеить имя выходного файла а потом подставтиь его динмаически ? (подозреваю что нет) Целиком клеить строку 2?) можно ли обработать как то в скрипте налчие файла - т.е если есть то удалить его или остановить MySQL скрипт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.01.2018, 20:52
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Гулин Федор, Не очень понял, зачем вам идти столь сложным путем. Можно же целиком выключить внешние ключи, сделать ALTER TABLE для всех таблиц и включить внешние ключи обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2018, 12:09
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
miksoftГулин Федор, Не очень понял, зачем вам идти столь сложным путем. Можно же целиком выключить внешние ключи, сделать ALTER TABLE для всех таблиц и включить внешние ключи обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2018, 12:13
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
miksoftГулин Федор, Не очень понял, зачем вам идти столь сложным путем. Можно же целиком выключить внешние ключи, сделать ALTER TABLE для всех таблиц и включить внешние ключи обратно. Имеется ввиду : SET FOREIGN_KEY_CHECKS=0; ALTER TABLE для всех таблиц SET FOREIGN_KEY_CHECKS=1; зы скрипты пока отрабатывают долго - в общей сложности порядка 6 часов если я по удаляю индексы а потом востановлю их - насколько это может помочь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2018, 13:05
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Такие SQL использую для оперделения размевро бд и таблиц можно им верить (или надо analyze table прогонять для всех таблиц ? ) 37288 размер БД до , 28397 после ~ 24 % имхо вполне себе приличный выигрыш ( там много audit таблиц с ПК из 2 полей к-е подрезались ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2018, 18:14
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
miksoftГулин Федор, Не очень понял, зачем вам идти столь сложным путем. Можно же целиком выключить внешние ключи, сделать ALTER TABLE для всех таблиц и включить внешние ключи обратно. вот про это вопрос - не до конца понял что имеется ввиду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2018, 22:40
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Гулин ФедорmiksoftГулин Федор, Не очень понял, зачем вам идти столь сложным путем. Можно же целиком выключить внешние ключи, сделать ALTER TABLE для всех таблиц и включить внешние ключи обратно. вот про это вопрос - не до конца понял что имеется ввиду.SET FOREIGN_KEY_CHECKS=0; Отключает проверку тотально, перестает проверять даже существование таблиц, на которые ведет ссылка. Гулин Федорзы скрипты пока отрабатывают долго - в общей сложности порядка 6 часов если я по удаляю индексы а потом востановлю их - насколько это может помочь ?Если вы уже провели конверсию, что в чем именно должно помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:13
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
miksoft, конверсия пока на тесте и 6 часов многовато - не факт что такое окно будет на проде пока идея побить на куски и конвертить по частям даже при SET FOREIGN_KEY_CHECKS=0; если FK есть то не дает менять тип полей - ругается в этом и был вопрос - без дропа FK пооже не обойтись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 21:44
|
|||
|---|---|---|---|
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
Гулин Федорпока идея побить на куски и конвертить по частямДа, можно за один заход менять одну таблицу и все ключи, которые на нее ссылаются. Правда, так суммарно работы станет больше, но зато меньшими кусками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 14:48
|
|||
|---|---|---|---|
|
|||
ПК с bigint на Int на БД MySQL 5.6 |
|||
|
#18+
1?) есть ли разница межуд командами DDL Код: sql 1. 2. 3. подозреваю что нет - но почему то начало 2 версия ( ну вот подправили так Скрипт не знаю зачем ) стала дольше выполняться - раньше макс. было 8 минут - теперь 2 раз уже фейлится по таймауту не думаю что из за этого но вдруг. 2?) Если команда фейлится через 6 минут с Workbench Error Code: 2013. Lost connection to MySQL server during query 600.516 sec я нашел там настройки таймаутов - там и стоит 600 сек. Edit -> Preferences -> SQL Editor and set to a higher value this parameter: а с командной строки как это установить ? и есть ли там какой-то глобальный таймаут чтобы уставноить 1 раз и не мучиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1830083]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 141ms |

| 0 / 0 |
