Jarhead
Постоялец
- Регистрация
- 17 Июн 2011
- Сообщения
- 415
- Реакции
- 169
- Автор темы
- #1
При обновлении интернет магазина, создается временная таблица, после занесения данных в которую, выполняется хранимая процедура:
Интернет-магазин имеет много посещений в день и видать кто то ловит момент переименования таблицы и возникает ошибка, как можно оптимизировать данный процесс чтобы подобных проблем не возникало? Читал что процесс изменения названия таблицы занимает 0.10 sec и это не подходит.
Код:
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `sync_fl`()
BEGIN
# READ ROWS COUNT IN ALL NEW TABLES AND SHOW ERROR IF ONE IS EMPTY
DROP TABLE IF EXISTS `sh_prod_im__`;
ALTER TABLE `sh_prod_im` RENAME TO `sh_prod_im__`;
ALTER TABLE `sh_prod_im_` RENAME TO `sh_prod_im`;
END$$
DELIMITER ;
Интернет-магазин имеет много посещений в день и видать кто то ловит момент переименования таблицы и возникает ошибка, как можно оптимизировать данный процесс чтобы подобных проблем не возникало? Читал что процесс изменения названия таблицы занимает 0.10 sec и это не подходит.
работая с транзакций, при правильном построение процедуры вам гарантирован откат до начального состояния (до момента измения) таблицы. Это раз. Когда обновляете данные в таблице с транзакцией, пока транзакция не завершена, пользователю отдаются данные на момент до начала изменения. Тоесть он и не видет что идет обновление, я потом бац, обновляет страницу, а данные уже другие > транзакция закоммителась. То, что Вы делаете в временной таблицей / insert, переимменовыванием, все муторно и до боли не правильно. Мое профессиональное мнение.