KorDen
Atra esterní ono thelduin!
- Сообщения
- 2,142
- Реакции
- 1,424
Собственно задался таким вопросом...
Где-то я как-то нашел (или мне скинули, давно было...) такой набор запросов, по идее "улучшающий" работу HLXCE:
Сейчас вот задумался, а все же, что лучше, какие таблицы лучше в каком типе хранить? Почитал много статей на тему "Преобладают только запросы на запись или только на чтение - MyISAM, и то и другое - InnoDB", и так далее, но так и не понял, что же лучше для прилично нагруженного сервера HLstatsX:CE...
Что имеем:
Текущая рабочая конфигурация - одна БД на один DeathMatch-сервер CSS на 64 слота, онлайн довольно-таки приличный, БД весит около 600 мб. SuperLogs не стоит, сохранение подробностей за 28 дней. Плюс есть вторая БД для паблика, но на ней нагрузка довольно маленькая, онлайн не очень большой.
Предполагаемая в дальнейшем конфигурация (сейчас все переделываю постоянно, и поэтому сохранность БД не критична, то есть если лучше будет создать новую БД с заранее определенными типами - создам): 6 серверов CSS, из них вышеуказанные два, плюс еще один паблик, один DM на 64 слота и два DM на 32 и 24 слота. Нагрузка общая приличная получается, в декабре, когда писалась статистика с пяти серверов, БД весила около 1.5 гб.
В принципе предложения по увеличению кешей в оперативной памяти тоже пригодятся, оперативы должно хватить...
Есть и еще один проект (не мой), БД с активными где-то 20ю тысячами игроков, TF2, четыре сервера. Тут уже иногда заметны подвисания, этот сервер на винде...
Итого вопрос, в основном к тем, кто разбирается в разнице типов таблиц и вообще MySQL - какую еще можно оптимизацию БД провести? Может где-то стоит изменить тип таблиц, а где-то произвести какие-то другие действия, которые могут улучшить картину?
Например, советчик phpMyAdmin пишет такое:
"Слишком большое количество запросов на блокировку таблицы, которые не были выполнены немедленно. Для уменьшения ожидания блокировки необходима оптимизация запросов и/или использование таблиц типа InnoDB."
Ну и еще много чего предлагается у него, особенномного советует использовать индексы, но я сам пока практически ничего не понимаю в SQL, и пытаюсь выяснить, что же лучше для HLXCE...
Где-то я как-то нашел (или мне скинули, давно было...) такой набор запросов, по идее "улучшающий" работу HLXCE:
ALTER TABLE `hlstats_Actions` ENGINE = INNODB;
ALTER TABLE `hlstats_Awards` ENGINE = INNODB;
ALTER TABLE `hlstats_ClanTags` ENGINE = INNODB;
ALTER TABLE `hlstats_Clans` ENGINE = INNODB;
ALTER TABLE `hlstats_Countries` ENGINE = INNODB;
ALTER TABLE `hlstats_Games` ENGINE = INNODB;
ALTER TABLE `hlstats_Games_Defaults` ENGINE = INNODB;
ALTER TABLE `hlstats_Games_Supported` ENGINE = INNODB;
ALTER TABLE `hlstats_Heatmap_Config` ENGINE = INNODB;
ALTER TABLE `hlstats_HostGroups` ENGINE = INNODB;
ALTER TABLE `hlstats_Maps_Counts` ENGINE = INNODB;
ALTER TABLE `hlstats_Mods_Defaults` ENGINE = INNODB;
ALTER TABLE `hlstats_Mods_Supported` ENGINE = INNODB;
ALTER TABLE `hlstats_Options` ENGINE = INNODB;
ALTER TABLE `hlstats_Options_Choices` ENGINE = INNODB;
ALTER TABLE `hlstats_PlayerNames` ENGINE = INNODB;
ALTER TABLE `hlstats_PlayerUniqueIds` ENGINE = INNODB;
ALTER TABLE `hlstats_Players` ENGINE = INNODB;
ALTER TABLE `hlstats_Players_Awards` ENGINE = INNODB;
ALTER TABLE `hlstats_Players_Ribbons` ENGINE = INNODB;
ALTER TABLE `hlstats_Ranks` ENGINE = INNODB;
ALTER TABLE `hlstats_Ribbons` ENGINE = INNODB;
ALTER TABLE `hlstats_Roles` ENGINE = INNODB;
ALTER TABLE `hlstats_Servers` ENGINE = INNODB;
ALTER TABLE `hlstats_Servers_Config` ENGINE = INNODB;
ALTER TABLE `hlstats_Servers_Config_Default` ENGINE = INNODB;
ALTER TABLE `hlstats_Teams` ENGINE = INNODB;
ALTER TABLE `hlstats_Weapons` ENGINE = INNODB;
ALTER TABLE `hlstats_Players` ADD INDEX ( `game` );
ALTER TABLE `hlstats_Players_Awards` ADD INDEX ( `playerid` );
ALTER TABLE `hlstats_Actions` ADD INDEX ( `game` );
ALTER TABLE `hlstats_Awards` ENGINE = INNODB;
ALTER TABLE `hlstats_ClanTags` ENGINE = INNODB;
ALTER TABLE `hlstats_Clans` ENGINE = INNODB;
ALTER TABLE `hlstats_Countries` ENGINE = INNODB;
ALTER TABLE `hlstats_Games` ENGINE = INNODB;
ALTER TABLE `hlstats_Games_Defaults` ENGINE = INNODB;
ALTER TABLE `hlstats_Games_Supported` ENGINE = INNODB;
ALTER TABLE `hlstats_Heatmap_Config` ENGINE = INNODB;
ALTER TABLE `hlstats_HostGroups` ENGINE = INNODB;
ALTER TABLE `hlstats_Maps_Counts` ENGINE = INNODB;
ALTER TABLE `hlstats_Mods_Defaults` ENGINE = INNODB;
ALTER TABLE `hlstats_Mods_Supported` ENGINE = INNODB;
ALTER TABLE `hlstats_Options` ENGINE = INNODB;
ALTER TABLE `hlstats_Options_Choices` ENGINE = INNODB;
ALTER TABLE `hlstats_PlayerNames` ENGINE = INNODB;
ALTER TABLE `hlstats_PlayerUniqueIds` ENGINE = INNODB;
ALTER TABLE `hlstats_Players` ENGINE = INNODB;
ALTER TABLE `hlstats_Players_Awards` ENGINE = INNODB;
ALTER TABLE `hlstats_Players_Ribbons` ENGINE = INNODB;
ALTER TABLE `hlstats_Ranks` ENGINE = INNODB;
ALTER TABLE `hlstats_Ribbons` ENGINE = INNODB;
ALTER TABLE `hlstats_Roles` ENGINE = INNODB;
ALTER TABLE `hlstats_Servers` ENGINE = INNODB;
ALTER TABLE `hlstats_Servers_Config` ENGINE = INNODB;
ALTER TABLE `hlstats_Servers_Config_Default` ENGINE = INNODB;
ALTER TABLE `hlstats_Teams` ENGINE = INNODB;
ALTER TABLE `hlstats_Weapons` ENGINE = INNODB;
ALTER TABLE `hlstats_Players` ADD INDEX ( `game` );
ALTER TABLE `hlstats_Players_Awards` ADD INDEX ( `playerid` );
ALTER TABLE `hlstats_Actions` ADD INDEX ( `game` );
Что имеем:
Текущая рабочая конфигурация - одна БД на один DeathMatch-сервер CSS на 64 слота, онлайн довольно-таки приличный, БД весит около 600 мб. SuperLogs не стоит, сохранение подробностей за 28 дней. Плюс есть вторая БД для паблика, но на ней нагрузка довольно маленькая, онлайн не очень большой.
Предполагаемая в дальнейшем конфигурация (сейчас все переделываю постоянно, и поэтому сохранность БД не критична, то есть если лучше будет создать новую БД с заранее определенными типами - создам): 6 серверов CSS, из них вышеуказанные два, плюс еще один паблик, один DM на 64 слота и два DM на 32 и 24 слота. Нагрузка общая приличная получается, в декабре, когда писалась статистика с пяти серверов, БД весила около 1.5 гб.
В принципе предложения по увеличению кешей в оперативной памяти тоже пригодятся, оперативы должно хватить...
Есть и еще один проект (не мой), БД с активными где-то 20ю тысячами игроков, TF2, четыре сервера. Тут уже иногда заметны подвисания, этот сервер на винде...
Итого вопрос, в основном к тем, кто разбирается в разнице типов таблиц и вообще MySQL - какую еще можно оптимизацию БД провести? Может где-то стоит изменить тип таблиц, а где-то произвести какие-то другие действия, которые могут улучшить картину?
Например, советчик phpMyAdmin пишет такое:
"Слишком большое количество запросов на блокировку таблицы, которые не были выполнены немедленно. Для уменьшения ожидания блокировки необходима оптимизация запросов и/или использование таблиц типа InnoDB."
Ну и еще много чего предлагается у него, особенномного советует использовать индексы, но я сам пока практически ничего не понимаю в SQL, и пытаюсь выяснить, что же лучше для HLXCE...