Позвольте мне сначала объяснить контекст: я строю трекер посещений с помощью PHP и MySQL. Поэтому, когда пользователь посещает определенный URL, его информация будет зарегистрирована, тогда он будет перенаправлен на страницу. Затем, когда он нажмет на ссылку, я зарегистрирую информацию и перенаправлю пользователя к месту назначения.
Так что мне нужно ЗАПИСЫВАТЬ информация в базе данных на момент посещения. И мне нужно Прочти и напиши информация на момент клика.
Моя проблема в том, что у меня будет много строк для сохранения в базе данных. И поскольку мне нужно очень быстро читать и писать (чтобы перенаправить пользователя как можно быстрее, это главная проблема), я думаю о разбиении своих таблиц.
Но каков будет самый быстрый способ сделать это? Я думал о двух решениях:
В основном просто делаю раздел на столе, основываясь на диапазоне зарегистрированного идентификатора. Когда я буду запрашивать данные, MySQL позаботится об этом напрямую, и это будет прозрачно со стороны PHP.
Но так как я не знаю, сколько строк мне нужно зарегистрировать, как я могу эффективно определить диапазон? А что, когда я достигну предела разделов?
Если у меня есть фактическое количество строк, кэшированных в памяти, я могу знать, что каждые 100.000 строк мне нужно создать новую таблицу. Итак, немного прежде чем я достигну предела, мне просто нужно создать новую таблицу. И по заданному идентификатору мне просто нужно поделить на 100.000, чтобы узнать таблицу, которую мне нужно запросить.
Таким образом, у меня не возникнет проблем с максимальным количеством разделов.
Но что будет наиболее эффективным в моей ситуации? Может ли система разделов, основанная на PHP (это то, что я собираюсь сделать в решении № 2), быть более эффективной, чем система из MySQL? Или я должен полагаться на MySQL и, если я когда-либо достигну предела, создать другую многораздельную таблицу?
Задача ещё не решена.
Других решений пока нет …