|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
15.01.2011, 03:23 | #1 |
MaNGOS Dev
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
|
[11045][patch] Multiple MySQL connections to database
Всем трямс.
Очередной патч, который гипотетически снова должен что-то улучшить Оригинальная тема на офф форуме: Multiple MySQL connections to database Вкратце по патчу: 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 Любые пожелания и комментарии приветствуются Последний раз редактировалось Ambal; 15.01.2011 в 09:34. |
5 пользователя(ей) сказали cпасибо: |
15.01.2011, 06:38 | #2 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
В кобольде сталкивались с проблемой, что персонаж не успевал сохраниться до попытки входа в мир при логаутах. Решение было метить транзакции отметкой содержащей гуид и в местах, где возможны траблы с чтением из базы использовались проверки нет ли незавершенной транзакции на этого персонажа.. но мы разделяли конекты (1 занимался запросами SELECT, 2 запросами INSERT+DELETE+REPLACE) насколько я помню.
Последний раз редактировалось zhenya; 15.01.2011 в 06:43. |
Пользователь сказал cпасибо: | Ambal (15.01.2011) |
15.01.2011, 09:01 | #3 | |
MaNGOS Dev
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
|
Цитата:
P.S. В этом патче мы также разделяем коннекты: 1) синхронный для SELECT 2) асинхронный для INSERT+DELETE+UPDATE Последний раз редактировалось Ambal; 15.01.2011 в 09:09. |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[11045] Rewrite internals of DB layer. Simplify code and use less locking. Spawn and use separate co | newsbot | CMaNGOS Commits | 22 | 22.01.2011 10:02 |
ошибка mysql | lovepsone | Флудильня | 8 | 14.12.2010 22:13 |
Оптимизация Mysql {my.cnf} | lina | Прочая документация | 10 | 20.06.2010 00:12 |
[10009] Fix realmd to accept more than 64 connections on windows. | newsbot | CMaNGOS Commits | 0 | 31.05.2010 02:25 |