Как оптимизировать базу данных сервера для 500+ игроков
Как оптимизировать базу данных сервера для 500+ игроков
Когда на сервере 500+ игроков, база данных становится узким горлышком. Медленные запросы вызывают лаги, а неправильные индексы — падение производительности. Я расскажу, как оптимизировать БД для крупного проекта.
1. Выбор СУБД
MySQL — классика, но для 500+ игроков лучше использовать MariaDB или PostgreSQL. MariaDB быстрее на чтении, PostgreSQL — на сложных запросах. Я рекомендую MariaDB 10.6+ с движком InnoDB.
2. Оптимизация структуры таблиц
Используй правильные типы данных: INT вместо BIGINT, VARCHAR вместо TEXT, где возможно. Добавь индексы на часто запрашиваемые поля: user_id, world_id, timestamp. Пример: CREATE INDEX idx_user_id ON player_data (user_id).
3. Партиционирование таблиц
Разбей большие таблицы по месяцам или по игрокам. Для таблицы логов: PARTITION BY RANGE (YEAR(created_at)) (PARTITION p2025 VALUES LESS THAN (2026), PARTITION p2026 VALUES LESS THAN (2027)). Это ускорит запросы на чтение и упростит очистку старых данных.
4. Настройка соединений
В плагинах, использующих БД (LuckPerms, CoreProtect), настрой пул соединений: pool-size: 10, connection-timeout: 30000. Не открывай новое соединение для каждого запроса — это убивает производительность.
5. Регулярная очистка
Настрой автоматическое удаление старых логов: DELETE FROM player_log WHERE created_at < NOW() - INTERVAL 30 DAY. Используй события MySQL для автоматической очистки. Храни только нужные данные.
На моём сервере после оптимизации БД время ответа сократилось с 200ms до 15ms. Игроки перестали жаловаться на лаги при входе.
💬 Комментарии (0)
🔒 Войдите, чтобы оставить комментарий
😊 Пока нет комментариев. Будьте первым!