db: use async writes for cache flushes

This commit is contained in:
server
2026-04-13 23:47:38 +02:00
parent 4cc8efaac8
commit d738743ed3

View File

@@ -2,7 +2,6 @@
#include "stdafx.h"
#include "Cache.h"
#include "QID.h"
#include "ClientManager.h"
#include "Main.h"
@@ -58,7 +57,7 @@ void CItemCache::OnFlush()
{
char szQuery[QUERY_MAX_LEN];
snprintf(szQuery, sizeof(szQuery), "DELETE FROM item%s WHERE id=%u", GetTablePostfix(), m_data.id);
CDBManager::instance().ReturnQuery(szQuery, QID_ITEM_DESTROY, 0, NULL);
CDBManager::instance().AsyncQuery(szQuery);
if (g_test_server)
sys_log(0, "ItemCache::Flush : DELETE %u %s", m_data.id, szQuery);
@@ -140,7 +139,7 @@ void CItemCache::OnFlush()
if (g_test_server)
sys_log(0, "ItemCache::Flush :REPLACE (%s)", szItemQuery);
CDBManager::instance().ReturnQuery(szItemQuery, QID_ITEM_SAVE, 0, NULL);
CDBManager::instance().AsyncQuery(szItemQuery);
//g_item_info.Add(p->vnum);
++g_item_count;
@@ -168,7 +167,7 @@ void CPlayerTableCache::OnFlush()
char szQuery[QUERY_MAX_LEN];
CreatePlayerSaveQuery(szQuery, sizeof(szQuery), &m_data);
CDBManager::instance().ReturnQuery(szQuery, QID_PLAYER_SAVE, 0, NULL);
CDBManager::instance().AsyncQuery(szQuery);
}
// MYSHOP_PRICE_LIST
@@ -248,7 +247,7 @@ void CItemPriceListTableCache::OnFlush()
//
snprintf(szQuery, sizeof(szQuery), "DELETE FROM myshop_pricelist%s WHERE owner_id = %u", GetTablePostfix(), m_data.dwOwnerID);
CDBManager::instance().ReturnQuery(szQuery, QID_ITEMPRICE_DESTROY, 0, NULL);
CDBManager::instance().AsyncQuery(szQuery);
//
// 캐시의 내용을 모두 DB 에 쓴다.
@@ -257,10 +256,10 @@ void CItemPriceListTableCache::OnFlush()
for (int idx = 0; idx < m_data.byCount; ++idx)
{
snprintf(szQuery, sizeof(szQuery),
// "INSERT INTO myshop_pricelist%s(owner_id, item_vnum, price) VALUES(%u, %u, %u)",
"REPLACE myshop_pricelist%s (owner_id, item_vnum, price) VALUES(%u, %u, %u)",
// "INSERT INTO myshop_pricelist%s(owner_id, item_vnum, price) VALUES(%u, %u, %u)",
"REPLACE myshop_pricelist%s (owner_id, item_vnum, price) VALUES(%u, %u, %u)",
GetTablePostfix(), m_data.dwOwnerID, m_data.aPriceInfo[idx].dwVnum, m_data.aPriceInfo[idx].dwPrice);
CDBManager::instance().ReturnQuery(szQuery, QID_ITEMPRICE_SAVE, 0, NULL);
CDBManager::instance().AsyncQuery(szQuery);
}
sys_log(0, "ItemPriceListTableCache::Flush : OwnerID[%u] Update [%u]Items", m_data.dwOwnerID, m_data.byCount);