Что лучше для HLX - MyISAM или InnoDB? И другая оптимизация...

Тема в разделе "HLstatsX:CE", создана пользователем KorDen, 25 фев 2013.

  1. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Собственно задался таким вопросом...
    Где-то я как-то нашел (или мне скинули, давно было...) такой набор запросов, по идее "улучшающий" работу 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` );
    Сейчас вот задумался, а все же, что лучше, какие таблицы лучше в каком типе хранить? Почитал много статей на тему "Преобладают только запросы на запись или только на чтение - 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...
     
  2. Renetus

    Renetus

    Сообщения:
    19
    Симпатии:
    1
    Добавлял этот запрос который описан, честно говоря незаметил никакой разницы что сним что без него, в базе 4 сервера
     
  3. bigworld13

    bigworld13

    Сообщения:
    37
    Симпатии:
    8
    Очень жаль что автору темы не ответили знатоки mysql. Я присоединяюсь к его вопросу. И плюс к тому у меня еще проблема: соурсбанс стоит вместе с игровыми серверами на одной машине. Все казалось бы отлично работает, но когда открываешь страницу Банлист, где список всех банов - ждешь ее генерации 20 сек. При этом процесс mysql подскакивает до 50%, что порой создает лаги на игровых серверах. Спасают только приоритеты в диспетчере. Насколько я понял при этом запросе с базы зачем то считываются все 2000 строк, вместо 30 требуемых, поэтому он так сильно нагружает процессор. Очень хотелось бы найти человека который решит эту проблему, готов поблагодарить монеткой. http://bans.27region.com
     
  4. Alice.bnd

    Alice.bnd

    Сообщения:
    21
    Симпатии:
    1
    Присоединяюсь к вопросу. ) С четырех серверов о которых упоминал Денис мы разрослись до двадцати. hlxce уже весит 2.5 Гига и безбожно тормозит даже после оптимизации.
    Так-же хочется поднять вопрос про настройку мускула на сервере с четырьмя ядрами и 2Г мозгов, что в принципе похоже уже явно недостаточно под кривую hlxce.
     
  5. NeXxX

    NeXxX

    Сообщения:
    320
    Симпатии:
    18
    Маркополики вы что ли?
     
  6. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Поменяйте MySQL на MariaDB и используйте движок TokuDB. Ну или всегда можете уйти на gameMe, они без проблем импортируют ваш дам статистики к себе, однако потом уже уйти от них будет нельзя :(
     
  7. Alice.bnd

    Alice.bnd

    Сообщения:
    21
    Симпатии:
    1
    Не вижу смысла менять мускуль на машу. Те-же яйца, только в профиль.
    Касательно TokuDB:
    ==========
    При проведении тестов, TokuDB опережает InnoDB при добавлении больших объемов данных более чем в 10 раз (InnoDB 1,555 записей в сек, TokuDB 16,437 записей в сек), но проигрывает по степени нагрузки на CPU при выборке данных.
    ==========
    У нас затык при выборке.

    Поэтому не буду.

    Да и КорДен там уже подшаманил что-то у нас. Стало значительно лучше. Завтра потребую отчет в устной форме (в плане, что хочу понимать как бороться с такими затыками). )))
     
    Последнее редактирование: 28 окт 2015
  8. MFS

    MFS

    Сообщения:
    1.309
    Симпатии:
    537
    Корден, а ты эту Алису живьем видел?
     
  9. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    А что понравилась?
     
  10. MFS

    MFS

    Сообщения:
    1.309
    Симпатии:
    537
    Да как сказать, кому и Серега очкарик невеста.