Portal SAMP
[Ajuda] [MySQL] mysql_query ou mysql_tquery ? - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] [MySQL] mysql_query ou mysql_tquery ? (/showthread.php?tid=976)



[MySQL] mysql_query ou mysql_tquery ? - MateusCandido - 25/03/2021

Estou desenvolvendo um script em MySQL e notei que no Wiki do plugin existe duas funções para executar consultas:

mysql_query - Sends a non-threaded query to the MySQL server.

mysql_tquery - Sends a query which will be executed in another thread.

Gostaria de saber qual a diferença das duas e quando usar cada uma delas?
Usei o search, mas depois que o fórum oficial foi desativado fica cada vez mais difícil achar algo sobre assuntos relacionados a samp.

link do wiki: https://sampwiki.blast.hk/wiki/MySQL


RE: [MySQL] mysql_query ou mysql_tquery ? - Dayvison - 25/03/2021

mysql_query -> Executa uma consulta no ramo atual, o código irá aguardar essa consulta ser executada para prosseguir.

Código:
mysql_query(...)
print("Consulta finalizada") :

mysql_tquery -> Executa uma consulta em outro ramo, o código irá prosseguir e essa consulta será executada em paralelo com ele. Caso faça múltiplas consultas simultaneamente, o servidor irá criar o mesmo número de ramos para executar todas em paralelo.

Código:
mysql_tquery(...)
print("Consulta está sendo executada em \"segundo plano\" ") :

mysql_pquery -> Executa uma consulta em outro ramo, o código irá prosseguir e essa consulta será executada em paralelo com ele. Caso faça múltiplas consultas simultaneamente, o servidor irá criar apenas um ramo, e executará todas em sequencia, uma aguardando a outra finalizar para prosseguir.

Código:
mysql_pquery(...)
print("Consulta está sendo executada em \"segundo plano\" ") :

tquery = Thread query
pquery = Pool query


RE: [MySQL] mysql_query ou mysql_tquery ? - MateusCandido - 26/03/2021

(25/03/2021 06:38)Dayvison Escreveu: mysql_query -> Executa uma consulta no ramo atual, o código irá aguardar essa consulta ser executada para prosseguir.

Código:
mysql_query(...)
print("Consulta finalizada") :

mysql_tquery -> Executa uma consulta em outro ramo, o código irá prosseguir e essa consulta será executada em paralelo com ele. Caso faça múltiplas consultas simultaneamente, o servidor irá criar o mesmo número de ramos para executar todas em paralelo.

Código:
mysql_tquery(...)
print("Consulta está sendo executada em \"segundo plano\" ") :

mysql_pquery -> Executa uma consulta em outro ramo, o código irá prosseguir e essa consulta será executada em paralelo com ele. Caso faça múltiplas consultas simultaneamente, o servidor irá criar apenas um ramo, e executará todas em sequencia, uma aguardando a outra finalizar para prosseguir.

Código:
mysql_pquery(...)
print("Consulta está sendo executada em \"segundo plano\" ") :

tquery = Thread query
pquery = Pool query

Então o mais adequado para não "travar" o servidor seria mysql_tquery?
Ja que se fizer uma consulta em OnPlayerConnect com mysql_query os jogadores ficariam muito tempo travado na tela de login até o resultado da consulta dele chegar, caso haja muitos logins simultaneos.


RE: [MySQL] mysql_query ou mysql_tquery ? - Dayvison - 26/03/2021

Neste caso sim, pois se você fizer uma consulta para um player, o processamento do servidor iria aguardar, consecutivamente fazendo todos os jogadores aguardarem, se usar tquery neste caso, apenas o jogador que está ligando irá aguardar.


RE: [MySQL] mysql_query ou mysql_tquery ? - MateusCandido - 26/03/2021

(26/03/2021 16:19)Dayvison Escreveu: Neste caso sim, pois se você fizer uma consulta para um player, o processamento do servidor iria aguardar, consecutivamente fazendo todos os jogadores aguardarem, se usar tquery neste caso, apenas o jogador que está ligando irá aguardar.

Entendi, muito obrigado Big Grin

+rep