> Ты умудряешься противоречить сам себе в одном сообщении. О чем тут говорить?
Чето не вижу, где я себе противоречу. Объясни, пожалуйста. Я неосторожно упомянул, что как бы обычно все таблички минимум меньше ОЗУ. Т.е. всегда целиком туда влезают. Ты за это зацепился, мол я по ходу что-то выдумал. Я говорю - окей, ничего не изменится, если не вся влезала. Проблема никуда не исчезает, просто повышается.
> Если у тебя боттлнек в записи на диск — это проблема с данными, которые пишутся однозначно медленнее индексов.
> Если у тебя боттлнек в записи в озу индексов — извини, тут уже никакие переименования таблиц тебя не спасут по определению уже.
Проблема в записи данных в таблицу. Что включает в себя неминуемую перестройку индекса.
> Атомарность переименования достигается эксклюзивными локами, о чем я писал
Опа, ты мне открыл глаза. А я то было думал, что при переименовании часть запросов остаются работать на старой таблице, часть на новой
> Кроме того, атомарность != быстрая операция
Не медленнее, чем просто селект. В один момент времени 99 обычных потоков дают селект. Один служебный дает переименование. Как только очередь дойдет до ренейма, текущий тред поставит лок (дождется окончания исполнения начатых селектов), выполнит переименования файлов на диске и снимет лок.
В твоей же версии переименовать файлы намного тяжелее, чем штатно в реалтайме гонять записи в табличку.
> чистит кэш запросов
Кеп, в хайлоде, как правило, не юзается Query cache (отключен изначально). А уж внешние ключи тем более.
Зачем тебе в поисковой таблице внешние ключи, ума не приложу? 1С пишешь? .-)
> Я попросил привести тебе реальную ситуацию, ты упорно с одной стороны пытаешься все обобщить — с другой рассказываешь про какие-то «граничные случаи».
1. Не пытайся приписать мне того, чего нет. Я начал с того, что не рекомендовал это применять. Поэтому что-либо приводить не должен. Более того, несколько раз написал, что суть метода - как одно из поисковых решений, на равне с традиционными решениями. Нужно думать над плюсами и минусами. По результатам нашего исследования (мы не х. в форумах пинали, а тесты делали и видели, что тормоза именно из-за вставки/удаления строк, а не апдейтов или селектов) был ликвидирован корень тормозов.
2. Но раз уж ты все обкакал, окей, я готов обосновать свой метод и троллить тут с тобой хоть до посинения
Это гон. Я все довольно конкретно описал. И пример из жизни уже привели - баннерная таблица. Есть таблица с 90% чтением и 10% записью, 10 млн строк, 500 запросов в секунду. Никак не отменяя другие варианты оптимизации, которые и так знают традиционные программисты, я говорю, что было бы не плохо сделать отложенную однопоточную запись. Ты уже которую страницу гонишь, не понятно с какой целью. Хочешь что-то доказать - ну, так сделай тест, докажи. Какую конкретику ты ждешь? Я не понимаю. Просто абстрактная поисковая таблица чего либо, состоящая из id объектов и числовых аргументов, а не основной массив данных. Представь баннерную вертушку. Ты не видишь разницы между информацией, которая реальна нужна для решения "какой баннер показать пользователю" и "куча других полей о каждом баннере"? Ну, че, я эту элементарщину обсасывал на мастер-классе. Все написанное касается именно поисковых случаев.
> ты мне рассказываешь, как у вас все было плохо
У нас было все хорошо, т.к. отложенная запись на корню отключала подвисания. Без нее - ВСЕ потоки внезапно могли подвиснуть на несколько секунд, когда нагрузка превышала физические возможности сервера. Почему все висело? Мыскыль с диском игрался, не позволяя ни одному селекту выполнится до завершения этой операции (от какой-то внезапного INSERT/DELETE). С отложенной записью не было общего зависания, просто все запросы в равной степени начинали работать медленнее. Т.е. селект выполнялись не за 0.001 сек, а за 0.1. И то обрати внимание, что тормоза начинаются, т.к. CPU физически не может все селекты исполнить. Запись и апдейты как бы почти отключаются, реже записываясь на диск, не мешая им (на этой основе главная идея Pinb'ы - если в локалсетке началась жопа, все UDP пакеты со статистикой автоматически херятся, что не просто допустимо, а автоматически отключает не самый нужный функционал). Юзер этого почти не замечал. И конечно не было общего зависания в моменты переключения таблиц. Кстати, раз ты так уперся рогом, не обязательно их переименовывать. Пхп код просто может с началом нового этапа в таблицу с новым именем идти (t_01, t_02 ...), которая к тому моменту заранее создана, проиндексирована и раскочегарена в памяти (с нее сразу сделана копия в будущую таблицу).
Плохо было только то, что это костыль, хоть и полезный. Избавится от него получилось за счет pg. Мля, сколько раз тебе еще пересказать это?