Как да напиша лог в базата данни (mySQL) - Интернет маркетинг форум
Трябва да напишете лог в базата данни. Един ред от журнал е около 400-500 байта. Приблизително 10-20 реда в секунда. Трябва да съхраните приблизително 10 000 000 реда.
Пробвах опцията - таблици MyISAM, изтриване на стари редове с конструкцията "DELETE FROM WHERE . LIMIT 10000" от cron. Всичко работи добре и производителността е добра. Но понякога масите са заключени.
Опитах InnoDB таблици - все още е минало малко време, но производителността е много по-лоша. Да, и някак си е грешно да се използва InnoDB за регистрационни файлове.
Като цяло въпросът е как научно правилно да използваме MySQL за логове?
| |
| |
2 потребители казаха благодаря: |
| |
Благодаря ти: | И как да избегнете загуба на данни в текстов файл по време на прехвърляне. Можете да използвате транзакции в базата данни, въпреки че това е ужасно бавно и според мен не е вярно за такива количества данни. Но как да избегнем загуба на данни във файловата система?
Прочетете файла в паметта за по-нататъшно прехвърляне към базата данни. Анулира го. Какво става, ако записът се случи между събитията „четене в паметта“ и „нула“?
Освен това проблемът е, че всеки запис всъщност се нуждае от id-shnik. Което в този случай се прикрепя към базата данни чрез автоматично нарастване. Идентификаторът е необходим незабавно, а не по-късно, тъй като понякога е необходимо допълнителни данни да бъдат добавени към реда на журнала чрез идентификатора, приблизително 0,5 - 2 секунди след създаването на реда.