[Modulo] MySQL Threads 1.2
#1
MySQL Threads 1.2

Descripción:
MySQL Threads es una modificación del modulo MySQL de amxmodx.
En esta modificación de removió todo el soporte para sqlite y prepare query, quedando solo lo relacionado a threadquery. Se mejoraron muchas cosas para sacarle el máximo rendimiento a las threadquery.

Mejoras:
- Cantidad de threads en cada frame y tiempo de espera configurable (lo hace mucho mas rápido).
- Soporta conexión permanente creada con mysql_connect (da mejor rendimiento).
- Si el servidor MySQL cierra la conexión permanente el modulo trata de reconectarse (con preparequery fallaba).
- Menor cantidad de parámetros para las natives (mas simple).
- mysql_escape_string mejorado.


Natives:
Código PHP:
native mysql_performance(collect_time=100th_think_time=100threads_per_frame=1);
native mysql_query(Handle:cn_handler, const handler[], const query[], const data[]=""dataSize=0);
native Handle:mysql_makehost(const host[], const user[], const pass[], const db[], timeout=0);
native mysql_free(Handle:_handle);
native Handle:mysql_connect(Handle:host_handler, &errcodeerror[], maxlength);
native mysql_more_results();
native mysql_isnull(column);
native mysql_read_result(column, {Float,_}:...);
native mysql_read_result2(const column[], {Float,_}:...);
native mysql_next_row();
native mysql_affected_rows();
native mysql_num_results();
native mysql_num_columns();
native mysql_fieldnumtoname(numname[], maxlength);
native mysql_fieldnametonum(const name[]);
native mysql_get_insert_id();
native mysql_get_query(buffer[], maxlength);
native mysql_rewind();
native mysql_next_result_set();
native mysql_escape_string(buffer[], buflen, const string[]);
native mysql_escape_string2(buffer[], buflen, const fmt[], any:...); 

mysql_performance:
Código:
[Configura la performance del ThreadsQuery]
-collect_time:
   Tiempo en milisegundos en el que se recolectan los datos listos
   min: 30ms
   max: 300ms
-th_think_time:
   Tiempo en milisegundos para el próximo frame del Thread
   min: 30ms
   max: 300ms
-threads_per_frame:
   Cantidad de Threads simultáneamente
   min: 1
   max: 20

Prueba de rendimiento:
(Configuración default de amxmodx)
test_mysql: 90 consultas en 9.60 segundos
test_mysql2: 90 consultas en 8.90 segundos

Después de test_mysql3:
test_mysql: 90 consultas en 0.80 segundos
test_mysql2: 90 consultas en 0.65 segundos
Código PHP:
#include <amxmodx>
#include <mysqlt>

#define PLUGIN "MySQL Threads Test"
#define VERSION "1.0"
#define AUTHOR "Destro"

new const sql_host[] = "localhost"
new const sql_user[] = "servidores"
new const sql_pass[] = "servidoressql"
new const sql_db[] = "servidores"

new const query[3][] = {
    
"SELECT * FROM `cuentas_30` WHERE(`nick` LIKE 'Destro')",
    
"SELECT * FROM `cuentas_30` WHERE(`nick` LIKE 'ZAMU')",
    
"SELECT * FROM `cuentas_30` WHERE(`nick` LIKE 'sofi')"
}

new 
Handle:g_Host
new Handle:g_Connection

new g_count

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
g_Host mysql_makehost(sql_hostsql_usersql_passsql_db)
    
    new 
error[32], errnum
    g_Connection 
mysql_connect(g_Hosterrnumerror31)
    if(
errnum)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
    }
    
    
mysql_query(g_Host"query_handler"query[0])
    
    
register_srvcmd("test_mysql""test")
    
register_srvcmd("test_mysql2""test2")
    
register_srvcmd("test_mysql3""test3")
}

public 
test()
{
    
g_count=0
    
for(new i90i++)
    {
        
mysql_query(g_Host"query_handler"query[1])
    }
    
}

public 
test2()
{
    
g_count=0
    
for(new i90i++)
    {
        
mysql_query(g_Connection"query_handler"query[2])
    }
    
}

public 
test3()
{
    static 
active
    active 
= !active
    
    
if(active)
    {
        
server_print("mysql_config_thread speed")
        
mysql_performance(50506)
    }
    else {
        
server_print("mysql_config_thread default")
        
mysql_performance(1001001)
    }
}

public 
query_handler(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR2: [%d]- [%s]"errnumerror)
        return
    }
    
    
g_count++
    
    new 
name[32], ammopacklevelfields[3]
    
    
fields[0] = mysql_fieldnametonum("nick")
    
fields[1] = mysql_fieldnametonum("ap")
    
fields[2] = mysql_fieldnametonum("level")
    
    
mysql_read_result(fields[0], name31)
    
    
ammopack mysql_read_result(fields[1])
    
level mysql_read_result(fields[2])
    
    
server_print("#%d -- Nick: [%s] ap:[%d] lvl:[%d] - Time:[%.2f]"g_countnameammopacklevelqueuetime)


Change log:
Código:
1.0: Publicacion
1.0b: Fix bug
1.1:
+native mysql_read_result2
+versión linux
1.2:
Fix bug
Check connection (mysql_ping)

Preguntas frecuentes:
¿ Porque no tiene soporte para sqlite ?
sqlite esta localhost y no es necesario threadquery.
¿ Porque no tiene soporte para preparequery ?
la idea de este modulo es soporte full MySQL, los servidores MySQL suelen ser remotos y preparequery queda obsoleto.

Source code:

.rar   mysqlt_source.rar (Tamaño: 69.86 KB / Descargas: 332)
Personalmente hubiera re-codeado casi todo,pero como no me llevo muy bien programando para linux no quería cagar el soporte de linux.

Modulo Win:

.rar   mysqlt_amxx.rar (Tamaño: 575.78 KB / Descargas: 622)

Modulo Linux:

.rar   mysqlt_amxx_i386.rar (Tamaño: 750.08 KB / Descargas: 584)

Include:

.inc   mysqlt.inc (Tamaño: 6.17 KB / Descargas: 1,248)
Responder


Mensajes en este tema
[Modulo] MySQL Threads 1.2 - por Destro - 29/09/2014, 04:57 AM
RE: [Modulo] MySQL Threads 1.0 - por [Anti] - 29/09/2014, 09:14 AM
RE: [Modulo] MySQL Threads 1.0 - por meTaLiCroSS - 29/09/2014, 09:20 AM
RE: [Modulo] MySQL Threads 1.0 - por RauliTop - 29/09/2014, 09:48 AM
RE: [Modulo] MySQL Threads 1.0 - por LuKks - 29/09/2014, 12:48 PM
RE: [Modulo] MySQL Threads 1.0 - por Kane - 29/09/2014, 01:05 PM
RE: [Modulo] MySQL Threads 1.0b - por Destro - 29/09/2014, 03:19 PM
RE: [Modulo] MySQL Threads 1.0b - por meTaLiCroSS - 29/09/2014, 03:33 PM
RE: [Modulo] MySQL Threads 1.0b - por Destro - 29/09/2014, 03:40 PM
RE: [Modulo] MySQL Threads 1.0b - por meTaLiCroSS - 29/09/2014, 03:52 PM
RE: [Modulo] MySQL Threads 1.0b - por Destro - 29/09/2014, 04:01 PM
RE: [Modulo] MySQL Threads 1.0b - por roccoxx - 29/09/2014, 05:09 PM
RE: [Modulo] MySQL Threads 1.0b - por Destro - 29/09/2014, 11:21 PM
RE: [Modulo] MySQL Threads 1.0b - por [Anti] - 09/10/2014, 06:49 PM
RE: [Modulo] MySQL Threads 1.1 - por Destro - 04/11/2014, 09:08 PM
RE: [Modulo] MySQL Threads 1.2 - por Goonzah - 22/12/2014, 11:59 PM
RE: [Modulo] MySQL Threads 1.2 - por Destro - 23/12/2014, 01:22 AM
RE: [Modulo] MySQL Threads 1.2 - por Goonzah - 20/01/2015, 12:52 AM
RE: [Modulo] MySQL Threads 1.2 - por Destro - 20/01/2015, 01:13 AM
RE: [Modulo] MySQL Threads 1.2 - por TotalBlood - 10/02/2015, 08:30 PM
RE: [Modulo] MySQL Threads 1.2 - por LuKks - 28/02/2015, 09:51 PM
RE: [Modulo] MySQL Threads 1.2 - por Exertency - 15/07/2016, 07:57 PM
RE: [Modulo] MySQL Threads 1.2 - por Destro - 15/07/2016, 11:22 PM
RE: [Modulo] MySQL Threads 1.2 - por Exertency - 16/07/2016, 12:18 AM
RE: [Modulo] MySQL Threads 1.2 - por Destro - 16/07/2016, 01:44 AM
RE: [Modulo] MySQL Threads 1.2 - por Exertency - 16/07/2016, 11:05 AM
RE: [Modulo] MySQL Threads 1.2 - por Asd123Asd - 18/07/2016, 08:13 PM
RE: [Modulo] MySQL Threads 1.2 - por Federicomb - 22/09/2016, 11:15 PM
RE: [Modulo] MySQL Threads 1.2 - por totopizza - 02/10/2016, 09:48 PM
RE: [Modulo] MySQL Threads 1.2 - por Sugisaki - 26/01/2017, 10:39 AM
RE: [Modulo] MySQL Threads 1.2 - por Federicomb - 26/01/2017, 01:14 PM
RE: [Modulo] MySQL Threads 1.2 - por Sugisaki - 26/01/2017, 02:47 PM
RE: [Modulo] MySQL Threads 1.2 - por Kane - 30/01/2017, 05:19 PM
RE: [Modulo] MySQL Threads 1.2 - por Destro - 26/01/2017, 12:23 PM
RE: [Modulo] MySQL Threads 1.2 - por CSAxel - 27/01/2017, 01:41 PM
RE: [Modulo] MySQL Threads 1.2 - por Federicomb - 27/01/2017, 04:13 PM
RE: [Modulo] MySQL Threads 1.2 - por Sugisaki - 30/01/2017, 12:42 AM
RE: [Modulo] MySQL Threads 1.2 - por Federicomb - 30/01/2017, 03:35 AM
RE: [Modulo] MySQL Threads 1.2 - por LuKks - 30/01/2017, 12:51 AM
RE: [Modulo] MySQL Threads 1.2 - por roccoxx - 30/01/2017, 07:52 AM
RE: [Modulo] MySQL Threads 1.2 - por LuKks - 30/01/2017, 10:52 AM
RE: [Modulo] MySQL Threads 1.2 - por LuKks - 30/01/2017, 09:37 PM
RE: [Modulo] MySQL Threads 1.2 - por Federicomb - 31/01/2017, 01:09 PM
RE: [Modulo] MySQL Threads 1.2 - por LuKks - 31/01/2017, 08:50 PM
RE: [Modulo] MySQL Threads 1.2 - por CSAxel - 15/02/2017, 03:37 AM
RE: [Modulo] MySQL Threads 1.2 - por LuKks - 15/02/2017, 10:23 AM
RE: [Modulo] MySQL Threads 1.2 - por Juan85 - 11/01/2018, 02:47 PM
RE: [Modulo] MySQL Threads 1.2 - por Valentina. - 11/01/2018, 03:02 PM
RE: [Modulo] MySQL Threads 1.2 - por Ipolito - 12/01/2018, 09:52 AM
RE: [Modulo] MySQL Threads 1.2 - por OneeL - 28/01/2018, 03:28 PM
RE: [Modulo] MySQL Threads 1.2 - por Tomy Rocker - 26/03/2018, 06:52 AM
RE: [Modulo] MySQL Threads 1.2 - por OsweRRR - 29/03/2018, 09:21 PM
RE: [Modulo] MySQL Threads 1.2 - por totopizza - 30/03/2018, 01:33 AM
RE: [Modulo] MySQL Threads 1.2 - por Juan85 - 11/04/2018, 04:55 PM
RE: [Modulo] MySQL Threads 1.2 - por Valentina. - 11/04/2018, 05:34 PM
RE: [Modulo] MySQL Threads 1.2 - por Juan85 - 11/04/2018, 07:14 PM
RE: [Modulo] MySQL Threads 1.2 - por OsweRRR - 18/03/2019, 10:13 PM
RE: [Modulo] MySQL Threads 1.2 - por totopizza - 18/03/2019, 11:45 PM
RE: [Modulo] MySQL Threads 1.2 - por xPecie - 06/06/2020, 05:49 PM
RE: [Modulo] MySQL Threads 1.2 - por meTaLiCroSS - 06/06/2020, 06:23 PM
RE: [Modulo] MySQL Threads 1.2 - por xPecie - 07/06/2020, 03:03 PM
RE: [Modulo] MySQL Threads 1.2 - por meTaLiCroSS - 07/06/2020, 06:30 PM
RE: [Modulo] MySQL Threads 1.2 - por xPecie - 08/06/2020, 08:53 AM
RE: [Modulo] MySQL Threads 1.2 - por alexiways - 28/07/2020, 04:41 AM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)