Ambal
15.01.2011, 03:23
Всем трямс.
Очередной патч, который гипотетически снова должен что-то улучшить =))) Оригинальная тема на офф форуме: Multiple MySQL connections to database (http://getmangos.com/community/post/130607/)
Вкратце по патчу:
1) переписан код по работе с базами данных. Также проведен рефакторинг.
2) используем несколько соединений с БД, отдельно для синхронных (SELECT) и асинхронных (INSERT+UPDATE+DELETE) запросов. Транзакции обрабатываются в отдельном потоке и только на асинхронном соединении!
3) используем меньшее количество мьютексов для работы. Класс SqlTransaction теперь также не нуждается в мьютексах.
Краткая статистика по типу SQL запросов, которые мы используем в коде мангоса:
1) SELECT - 398
2) INSERT - 88
3) DELETE - 255
4) UPDATE - 158
Чисто теоретически должно повысить производительность сервера. На практике может обернуться траблами с сохранностью данных в БД (что маловероятно) либо их релевантностью при чтении из базы (читаем про уровни изоляции транзакций).
ВНИМАНИЕ: обязательно сделайте бекап базы данных перед тестом! В случае если вдруг начнут обнаруживаться проблемы с целостностью данных - мы откажемся от идеи нескольких параллельных соединений к базе!
Репозиторий: https://github.com/Ambal/mangos
Ветка: master
Любые пожелания и комментарии приветствуются :)
Очередной патч, который гипотетически снова должен что-то улучшить =))) Оригинальная тема на офф форуме: Multiple MySQL connections to database (http://getmangos.com/community/post/130607/)
Вкратце по патчу:
1) переписан код по работе с базами данных. Также проведен рефакторинг.
2) используем несколько соединений с БД, отдельно для синхронных (SELECT) и асинхронных (INSERT+UPDATE+DELETE) запросов. Транзакции обрабатываются в отдельном потоке и только на асинхронном соединении!
3) используем меньшее количество мьютексов для работы. Класс SqlTransaction теперь также не нуждается в мьютексах.
Краткая статистика по типу SQL запросов, которые мы используем в коде мангоса:
1) SELECT - 398
2) INSERT - 88
3) DELETE - 255
4) UPDATE - 158
Чисто теоретически должно повысить производительность сервера. На практике может обернуться траблами с сохранностью данных в БД (что маловероятно) либо их релевантностью при чтении из базы (читаем про уровни изоляции транзакций).
ВНИМАНИЕ: обязательно сделайте бекап базы данных перед тестом! В случае если вдруг начнут обнаруживаться проблемы с целостностью данных - мы откажемся от идеи нескольких параллельных соединений к базе!
Репозиторий: https://github.com/Ambal/mangos
Ветка: master
Любые пожелания и комментарии приветствуются :)