Jump to content

"Блокировка" магазина при выполнении обработок


alexts

Recommended Posts

При закачке из экселя, нарезке картинок магазин становится полностью недоступен для посетителей.

Хочется понять :

Это связано с возможностями MySql

Потому, что так написан код скриптов,

Еще какие причины ?

Почему ресурсы свободные есть, а он блокируется, и как распараллелить выполнение задач?

  • Like 4
Link to post
Share on other sites
support

Ну если большая слишком нагрузка на базу, то да, может быть недоступен.

 

А обычно без разницы, всё работает, по умолчанию точно ничего не должно блокироваться, всё ж параллельно идёт, запросы в базу для обновленяи данных - это одни запросы, запросы на вывод товаров в каталоге - другие.

 

Может нарезка картинок всё тормозит, это довольно ресурсоёмкая задача.

Link to post
Share on other sites

Не , обновляется прайс - в магазин не войдешь.

Нарезка - так вообще операция таинственная. К базе вроде совсем отношения не имеет.

А выставить лимиты потребления для скриптов никак нельзя? Пусть дольше, зато доступ останется...

Link to post
Share on other sites

А про использование storage engine innodb , а не myisam ничего не скажете.

В битриксе, в статье по оптимизации mysql под эту прожорливую систему, акцентируют именно на innodb.

Или я что то не понимаю.

Но вот на серваке установлено как дефолт innodb. Смотрю в phpmyadmin базу магазина - таблицы myisam.

Может надо(или не надо) пересоздавать, конвертировать... Или фигней занимаюсь ? :)

Link to post
Share on other sites
support

Лично я считаю, что движок не принципиален, если у Вас не миллионы записей в базе, нет каких супер сложных sql запросов.

 

Разве что у myisam бывают проблемы, даже на форуме не раз и не два писали о том, что у пользователей таблицы ломались (crashed) и приходилось их восстанавливать (repair).

 

Но это тоже редкость и легко исправляется.

 

В общем, пусть что есть, то и остаётся.

 

P.S. Кстати, тоже интересна была эта тема, много есть статец на этот счёт в инете, там описаны все детали, в чём разница. В VamShop 2 используется именно InnoDB, но разницы, видимой глазу, всё равно нет, разве что я пока что не видел, что б у InnoDB таблицы ломались как у Myisam. Так что для большинства случаев движок не важен. 

Link to post
Share on other sites

Приблизился к просветлению.

Самое важная разница в обсуждаемом контексте (для нашего уровня задач) то, что в innodb блокировка на уровне полей, в майсам на уровне таблиц. То есть во втором случае при записи в базу блокируется и эта таблица и все связанные.

Что еще понял - таблицы обоих типов могут существовать одновременно.

Майсама критично быстрее на выборках и поддерживает полнотекстовой поиск, но блокирует таблицами

Innodb - самовосстановима, поддерживает целостность транзакций, блокировка на уровне полей - то есть реально распарраллеливает нагрузку.

Самое главное - поддерживается то, что написал программист :(

Вывод: никак распараллелить операции без переписки кода магазина не получится :(

Вывод 2: блокировка магазина при загрузке и обновлении прайса из экселя - естественное явление , обусловленное использованием таблиц myisam.

Вывод 3: - хреново, поскольку виден "потолок" масштабирования движка и неожиданно не в количестве и объемах, а в обеспечении непрерывной доступности :(

Link to post
Share on other sites
support

В таких тонкостях пока не разбирался, да и не проблема ведь поменять движок таблиц, сделать backup, да поменять MYISAM на INNODB и KEY на INDEX

Link to post
Share on other sites

А как это "не проблема" реально сделать? В каком конкретно месте? Я бы поэкспериментировал , возможно можно избавиться от вышеперечисленных блокировок

Link to post
Share on other sites
support

В sql файле, т.е. в дампе базы данных внизу каждой таблицы указывается движок. 

Link to post
Share on other sites

Спасибо. Сейчас одно дельце сделаю и поиграюсь. Отпишусь по результатам.

Link to post
Share on other sites
  • 2 weeks later...

В общем попробовал.

Переименование MYISAM на INNODB позволило переключить движок - работает вроде без глюков и в логах и в phpmyadmin порядокю

Переименование KEY на INDEX - сбой при загрузке еще первой таблицы - не делалось.

Теперь о результатах - нулевые , как блокировался магаз при выполнении скриптов нарезки и загрузки , так и остается недоступным.

Видимо скрипты покруче будут , чем какой то INNODB. Им пофигу уровни блокировок на уровне полей - используют захват на полную катушку даже не таблицами, а сразу всю базу :)

 

Таким образом, смысл перехода на данный движок в следующем:

1. Для растущих и разросшихся баз

2. Чтобы не опитмизировать таблицы - здесь это не надо

3. Движок поддерживает целостность транзакций и такую базу труднее "убить".

Кстати по производительности отличий не замечено, но это субъективно - глубоко не копал и не грузил.

В общем просветился, а задачу блокировок так и не решил :(

 

Разумеется - грубый метод. Подозреваю, что разработчик должен грамотно назначить какие таблицы в каком режиме лучше будут работать. Может это и позволило бы развести скрипты и посетителей ...

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...