Search the Community
Showing results for tags 'mysql'.
-
С базой MySQL работает веб-приложение, поэтому запросы должны быть максимально оптимизированы на скорость выполнения. Есть 3 связанные таблицы: 1) Главная таблица содержит ряд полей, среди которых поле-индекс town_id связывающее ее со 2й таблицей 2) таблица town содержит поля: town_id (bigint) PRIMARY AUTO_INCREMENT country_id (int) INDEX town (varchar) поля country_id и town объединены в ключ UNIQUE 3) таблица country country_id (int) PRIMARY AUTO_INCREMENT country (varchar) UNIQUE При INSERT или UPDATE главной таблицы данные от пользователя поступают в виде town=Город country=Страна соответственно выполняю ряд запросов: INSERT IGNORE INTO country (country) VALUES('Страна'); INSERT IGNORE INTO town (country_id, town) VALUES(LAST_INSERT_ID(), 'Город'); UPDATE main_table SET town_id=LAST_INSERT_ID() WHERE ... Проблема в том что если INSERT IGNORE не вставил новую запись (при совпадении UNIQUE полей) то LAST_INSERT_ID() возвращает некорректное значение. Выполнять 2 лишних запроса SELECT для проверки существования города и страны в базе не есть хорошо в плане производительности. Возможно есть другие варианты реализации?
-
Доброго времени суток всем. Есть сервер MySQL 4.1, делается бэкап базы (3 ГБ) ежесуточно через mysqldump. Необходимо делать ежечасные бэкапы базы во время работы пользователей с базой. Когда-то где-то встречал решение, но, к сожалению, вообще не помню ни как это называется, ни как делается. Смысл сводился к быстрому (промежуточному?) бэкапу, дабы можно было восстановить информацию по состоянию за последний час, а не последние сутки. Полный бэкап делать не могу, т.к. много пользователей и мускль всех пошлет "НА" во время бэкапа. У кого-то есть мысли?