d1pro Опубликовано 1 Ноября 2005 Жалоба Поделиться Опубликовано 1 Ноября 2005 Вообще говоря в порядочных базах данных положено поддерживать целостность данных. Я конечно понимаю, внешние ключи немного геморно. Триггера и хранимые процедуры мы не умеем (мускул точнее). Однако у меня тут пару раз сервер падал в очень неподходящие моменты в результате чего пропадали посты, темы и даже целые разделы. Восстанавливается все элементарно, мне вот интересно, кому-нибудь будет интересен скрипт проверки целостности базы, ну т.е. на утраченные связи и т.п. или только у меня такие проблемы? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 1 Ноября 2005 Жалоба Поделиться Опубликовано 1 Ноября 2005 гм.. только у тебя имхо.копай в сторону хостера.на сорсах база огромная но падает очень редко. Очень редко бывает что слетает индекс.Причём база очень востребована, долбит её куча запросов из разных скриптов. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
d1pro Опубликовано 1 Ноября 2005 Автор Жалоба Поделиться Опубликовано 1 Ноября 2005 Не, падает не база, а сервер. А в результате в таблицах пропавшие строчки. Не часто бывает, что строчки пропадают, но бывает. Да и вообще, мало ли мусора может быть в базе без поддержки целостности ссылок Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Fisana Опубликовано 1 Ноября 2005 Жалоба Поделиться Опубликовано 1 Ноября 2005 У меня на компе сервер... При отключении электричества база глючит.Вот сейчас висит на форуме 6 юзеров "онлайн" с датой онлайна - январь 2031 года. Так и будут висеть, пока снова не зайдут (или до 2031-го..)А со временем реальным все ок вроде бы.. Что сбилось, понять не могу (( Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SAT Опубликовано 1 Ноября 2005 Жалоба Поделиться Опубликовано 1 Ноября 2005 d1proхм.. очень даже интересно то есть ты хочешь использовать несколко основнх таблиц, которые в основе свей задествованы на форуме и искать выпадающие ключи? или скрипт будет за точку отсчета брать одну таблицу и бежать по базе ища дырки?(честно говоря этот вариант я мало представляю себе потому что в базе не все таблици связаны возмем например ipb_faq? вроде бы ни с чем она не связана, хотя за точку отсчета можно взять ibf_posts, от этой таблици можно найти путь до любой другой)в общем очень интере6сен алгортм поиска Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
d1pro Опубликовано 2 Ноября 2005 Автор Жалоба Поделиться Опубликовано 2 Ноября 2005 -SAT-Не, проверяться будут только связанные таблицы. А алгоритм крайне прост. Вот например поиск потерянных постов:SELECT DISTINCT p.topic_id FROM ibf_posts p LEFT JOIN ibf_topics t ON (p.topic_id=t.tid) WHERE t.tid IS NULLНу и т.д. Просто хочу чтобы это дело автоматом делалось и автоматом восстанавливались потерянные строки. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 cron, не? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SAT Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 d1pro) весьма полезный скрипт, а у меня была идея сегодня на счет создания таблицы индексов и потом по этой таблице проверять целостность геморно но все же кстати, а может стандартный insert бликировать и складывать в очередь что бы не бились таблицы?INSERT DELAYEDпонимаю тормазить будет нормально, но все же... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 а у меня была идея сегодня на счет создания таблицы индексов и потом по этой таблице проверять целостностьэто из "области сам не знаю о чем пишу"?Покурим маны? http://dev.mysql.com/doc/refman/4.1/en/tra...l-commands.html 4-ка уже не редкость... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SAT Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 это из "области сам не знаю о чем пишу"? неа как раз по этому поводу консультировался, как это было уже реализовано, и какие проблеммы при этом возникают когда происходит восстановление талицы Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 таблица индексов ведется самим MySQL... если вы хотите создать таблицы связей, то я вам сочувствую... таблицы связей то тоже будут запросами наполнятся... для поддержки целостности уже давно придуман механизм транзакций. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SAT Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 если вы хотите создать таблицы связей, то я вам сочувствую... таблицы связей то тоже будут запросами наполнятся... именно это и имелось ввиду, просто другой идеи небыло как бежать по всей базе скриптом... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 повторю вопрос - вы знаете что такое транзакции? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 Если не ошибаюсь, то транзакция это определенная последовательность команд, переводящих базу данных из одного неконфликтного состояния в другое неконфликтное. Могу и ошибаться Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SAT Опубликовано 2 Ноября 2005 Жалоба Поделиться Опубликовано 2 Ноября 2005 повторю вопрос - вы знаете что такое транзакции? транзакция заключается в том что несколько команд сливаются в одну операцию, при том все это происходит по принципу "все или ничего". Промежуточные состояния между шагами не видны для других конкурирующих транзакций и если во время выполнения транзакции случится ошибка, которая помешает транзакции завершится, то в базе данных никаких изменений сделано не будет. ЗЫ: а что?? START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;именно вот этого синтаксиса не знал, спасибо Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
d1pro Опубликовано 2 Ноября 2005 Автор Жалоба Поделиться Опубликовано 2 Ноября 2005 Не, не cron. Просто пройтись по базе и посмотреть, чего там у нас потерялось. У меня и лишние строки от удаленных пользователей были (в смежных таблицах) и исчезнувшие темы (посты есть, а темы нет) и т.п. Чтоб быстро можно было просканить на весь этот мусор и убрать/восстановить. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.