Собственно, есть система:
0) Система учета доступа (пластиковые карты входа в помещения).
1) Ее интерфейс управления. Отдельная машинка под Win2k.
2) Выгрузка из этого интерфейса в единственном доступном ему формате - Paradox SQL и единственном доступном виде - за все время.
3) Отправка .db файла по ssh на сервер с MySQL.
4) Выгрузка .db через pxsqldump в формат SQL.
5) Очистка таблицы в базе MySQL.
6) Загрузка туда _всей_ базы по новой.
Естественно, заливка этой всей инфы занимает время (3-4 минуты). А синхронизация производится раз в 15 минут...
Возможно сделать так, чтобы в MySQL заносилось только то, чего там нет? А не вся база.
p.s. выбирать по времени (т.е выгружать, например, только за последние 15 минут) - не вариант. Эта система имеет несколько довольно вредных привычек, сделана весьма криво и легко может пропустить 1-2 синхронизации. А то и повиснуть вовсе. Тогда инфа за это время просто пропадет.
Paradox SQL.
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Paradox SQL.
insert ignore
-
- проходил мимо
Re: Paradox SQL.
Не выйдет. pxsqldump выдает уже готовые запросы, по типу:
INSERT INTO perco_events VALUES (13485,'2006-08-03','14:38:06',1,102,7564,84,112,141,140);
Которые и перенаправляются в mysql. Можно, коненчно, завернуть это в файл, потом в файле sed-ом заменить все INSERT на INSERT IGNORE, и уже файл скормить mysql-ю. Собственно пока так и сделал, как временно-рабочее решение. Спасибо. Но есть 2 проблемы:
1) Решение времнное - в файле получается 400+ строк, причем он прибавляет в весе с каждым днем.
2) Ускорения между инсерт и инсерт игнор - мало ;(
А то время, которое затрачивается на вывод в файл и прогон седом сжирает и эту прибавку - получается даже на несколько секунд дольше. Секунд - т.к. сервер полностью разгружен сейчас. В разгар рабочего дня с cpuload 50%-65% это выливается в минуты. В случае, если наслаивается на выборку из этой же БД - дольше, а если еще и на другие тяжелые задачи, вроде бэкапа на удаленную машину или выборку отчета по трафику - то в десяток минут ;(
Короче, спасибо за рабочее решение. Но может есть мысли по еще пущей оптимизации?
INSERT INTO perco_events VALUES (13485,'2006-08-03','14:38:06',1,102,7564,84,112,141,140);
Которые и перенаправляются в mysql. Можно, коненчно, завернуть это в файл, потом в файле sed-ом заменить все INSERT на INSERT IGNORE, и уже файл скормить mysql-ю. Собственно пока так и сделал, как временно-рабочее решение. Спасибо. Но есть 2 проблемы:
1) Решение времнное - в файле получается 400+ строк, причем он прибавляет в весе с каждым днем.
2) Ускорения между инсерт и инсерт игнор - мало ;(
А то время, которое затрачивается на вывод в файл и прогон седом сжирает и эту прибавку - получается даже на несколько секунд дольше. Секунд - т.к. сервер полностью разгружен сейчас. В разгар рабочего дня с cpuload 50%-65% это выливается в минуты. В случае, если наслаивается на выборку из этой же БД - дольше, а если еще и на другие тяжелые задачи, вроде бэкапа на удаленную машину или выборку отчета по трафику - то в десяток минут ;(
Короче, спасибо за рабочее решение. Но может есть мысли по еще пущей оптимизации?
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Paradox SQL.
естественно, ну дак и задача стояла какГость писал(а):2) Ускорения между инсерт и инсерт игнор - мало ;(
INSERT IGNORE не вставляет строки, если они существуют, но при этом идёт провека по ключу, на ней и тормозит.different писал(а):Возможно сделать так, чтобы в MySQL заносилось только то, чего там нет? А не вся база.
конечно есть, делается всё просто и легко:Гость писал(а): Но может есть мысли по еще пущей оптимизации?
1. если таблица переливается полностью, то делаешь TRUNCATE таблицы (либо её дропаешь и создаёшь заново, но никак не DELETE)
2. вставляешь без проверки по ключам (на них больше всего тормозит)
Ещё вариант: извлекаешь данные только за день и соотвественно заменяешь записи только за день. Для этого можно даже вы***тся и заюзать греп для извлечения только нужных строк ))). Правда я для таких махинаций использую старый добрый C.