Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация альтов по скорости / 13 сообщений из 13, страница 1 из 1
26.05.2015, 11:39:08
    #38968470
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
Мы генерируем таблицы в мускуле на основе текстового файла, в котором задаются поля и параметры, ну, типа так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
page:
id, int, auto
tit, txt
des, txt
keys, txt
chpu, chpu, index
qry, txt, index8

img:
id, int, auto
tit, txt
ext, chpu

...



Как вы наверное понимаете, с помощью create table создается только таблица с айдишником по первой строке, а все остальное альтами

Короче, на проектах, в которых набралось около 30 таблиц эти альты что-то жестко тормозят и это на пустых таблицах!! Большинство альтов срабатывают за 40мс, но бывает и по полсекунды, а некоторые иногда и на секунду с лишним тянут. И это, повторяю, на пустых таблицах!!

Подскажите, может есть какие-то хаки как альты можно ускорить?
...
Рейтинг: 0 / 0
26.05.2015, 12:43:31
    #38968583
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
LumixКак вы наверное понимаете, с помощью create table создается только таблица с айдишником по первой строке, а все остальное альтамиНе понимаем. Почему сразу не сгенерить create со всеми полями?
...
Рейтинг: 0 / 0
26.05.2015, 20:30:29
    #38969204
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
tanglirLumixКак вы наверное понимаете, с помощью create table создается только таблица с айдишником по первой строке, а все остальное альтамиНе понимаем. Почему сразу не сгенерить create со всеми полями?

Потому, что когда кто-то вносит изменение в этот файл, ну например, изменение имени колонки, тогда create table перестает работать, ведь таблица уже создана
...
Рейтинг: 0 / 0
26.05.2015, 20:35:54
    #38969208
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
LumixПотому, что когда кто-то вносит изменение в этот файл, ну например, изменение имени колонки, тогда create table перестает работать, ведь таблица уже созданаИ что, это бывает прям так часто, что секунда прям важна?
...
Рейтинг: 0 / 0
26.05.2015, 21:03:15
    #38969220
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
Lumixкогда кто-то вносит изменение в этот файл, ну например, изменение имени колонки, тогда create table перестает работать, ведь таблица уже создана
Ну сделай по уму - старую переименуй, новую создай, перелей данные, старую дропни.
...
Рейтинг: 0 / 0
27.05.2015, 06:40:09
    #38969347
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
LumixПотому, что когда кто-то вносит изменение в этот файл, ну например, изменение имени колонки, тогда create table перестает работать, ведь таблица уже созданаLumixМы генерируем таблицыТогда уж пишите как-нибудь наподобие "мы синхронизируем структуру таблиц с...". Слово "генерируем" лично мне однозначно говорит о том, что на момент генерации таблиц нет.
Ну и действительно, неужели плюс-минус секунда так важна при выполнении разовой операции?
...
Рейтинг: 0 / 0
28.05.2015, 18:27:26
    #38971142
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
AkinaНу сделай по уму - старую переименуй, новую создай, перелей данные, старую дропни.

Чё-то где-то в доках я когда-то читал, что вроде мускул сам это делает при альтах на добавление, разве нет?

tanglirНу и действительно, неужели плюс-минус секунда так важна при выполнении разовой операции?

20 таблиц по примерно 15 полей в каждой итого примерно 300
на каждую позицию два альта + альты на создание индексов
итого 600-700 запросов
поскольку это веб-приложение и его установка/апдейт происходит с помощью http://site.ru/install/
а на серверах стоит лимит в 30 секунд на выполнение скрипта
именно поэтому все альты не успевают сработать

* * * * * *

Читая эту ветку я пока склоняюсь к такой мысли: перед создание таблицы проверять её наличие, если она есть тогда фигачим альтами, а если её нет, тогда фигачим create'ом... эх... ещё один сборщик составлять и отлаживать. :-)
...
Рейтинг: 0 / 0
28.05.2015, 18:30:52
    #38971144
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
Lumixи это на пустых таблицах!!может, тогда не ломать голову и сразу делать drop if exists + create?
...
Рейтинг: 0 / 0
28.05.2015, 18:37:14
    #38971147
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
Lumixа на серверах стоит лимит в 30 секунд на выполнение скрипта
именно поэтому все альты не успевают сработатьРазбивайте на фрагменты.
Некоторые CMS умудряются при таких ограничениях собственные бэкапы в пару ГБ делать.
...
Рейтинг: 0 / 0
28.05.2015, 18:42:45
    #38971150
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
Lumix20 таблиц по примерно 15 полей в каждой итого примерно 300
на каждую позицию два альта + альты на создание индексов
итого 600-700 запросовКстати, в одном альте можно делать сразу несколько изменений у одной таблицы. Так что, возможно, хватит и 20 альтов.
...
Рейтинг: 0 / 0
28.05.2015, 18:48:36
    #38971156
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
miksoftLumix20 таблиц по примерно 15 полей в каждой итого примерно 300
на каждую позицию два альта + альты на создание индексов
итого 600-700 запросовКстати, в одном альте можно делать сразу несколько изменений у одной таблицы. Так что, возможно, хватит и 20 альтов.

Опа.... а можно поподробнее??

Неужели

Код: sql
1.
alter table t add column a int add b int add c int add index a_index (a)



прям вообще быстрее, чем

Код: sql
1.
2.
3.
4.
alter table t add column a int;
alter table t add b int;
alter table t add c int;
alter table t add index a_index (a)



???
...
Рейтинг: 0 / 0
28.05.2015, 18:56:04
    #38971161
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
miksoftНекоторые CMS умудряются при таких ограничениях собственные бэкапы в пару ГБ делать.

на наверное они не сами бекап делают, а из скриптов через командную строку кидают приказ на что-нибудь типа mysqldump

мы делаем именно так и бекапы работают очень и очень быстро
а заливаем тоже через комнадную строку mysql db_name > dump.bkp.sql
получается очень и очень быстро
...
Рейтинг: 0 / 0
28.05.2015, 19:01:53
    #38971165
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация альтов по скорости
LumixОпа.... а можно поподробнее?? http://dev.mysql.com/doc/refman/5.5/en/alter-table.html [alter_specification [, alter_specification] ...]
LumixНеужели
Код: sql
1.
alter table t add column a int add b int add c int add index a_index (a)

прям вообще быстрее, чем
Код: sql
1.
2.
3.
4.
alter table t add column a int;
alter table t add b int;
alter table t add c int;
alter table t add index a_index (a)

???Если в таблице есть данные, то почти наверняка - да, т.к. некоторые альты внутри себя фактически выполняют копирование всей таблицы. А одно копирование явно быстрее, чем несколько копирований.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация альтов по скорости / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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