Muchas consultas, en MySQL
#1

Buenas, me ocurre lo siguiente:

El payday del servidor llega cada hora a todos los usuarios, y pensaba si podrнa hacer que ahн se ejecuten 3 consultas mysql para guardar los datos en la base de datos. їEsto traerнa inconvenientes, tipo lag, mal rendimiento, etc?. Es mejor hacerlo asн, o hacer que los datos que se actualizan en la bd se actualicen cuando el jugador se desconecte.

No sй, pero digamos que con 60 usuarios en lнnea serнan 180 consultas que tendrнa que hacer al mismo tiempo el servidor cada hora.. їEsto es malo? ya se, es una duda algo tonta pero bueeno

Gracias
Reply
#2

igual una consulta a la bd no tarda tanto, a menos que tengas la bd en un host donde tu servidor tenga que dar muchos saltos para llegar.
Reply
#3

Que motor de tablas estas ocupando? Que intermediario estas ocupando para conectar tu servidor con MySQL?
Reply
#4

Yo te recomendaria ejecutar las sentencias cuando se desconecte el jugador. Si bien mysql es un sgbd robusto capas de soportar y reposnder hartas consultas, por un tema de buenas practicas, haslo al momento de desconectar
Reply
#5

Gabo, cuando el servidor se cierra de golpe, las estadнsticas no se guardan. Por eso algunos actualizan cada ciertos minutos.

Supongo lo sabнas, pero lo recalco para otros. Jaja.
Reply
#6

Buen punto ese... alfinal en pawn no se puede aplicar el concepto de buenas practicas para algunas cosas

...en fin, volviendo al tema, si podrias hacerlo ingane al momento de q se ejecute el payday, pero, te aconsejaria evitar tener q enviar las sentencias a nivel de script... me explico, mysql soporta triggers y procedimientos almacenados, por tema de tiempo no puedo explicarte todo sobre eso en detalle, pero en tu caso serian de mucha utilidad y evitarias ejecutar 3 consultas

Los triggers son funciones que se ejecutan antes o despues de realizar una consulta a una tabla, puedes hacer validaciones de datos a nivel de base de datos, claro q ocupas proceso en el motor de base dr datos, pero si tienes buen host no tendrias tantos problemas y los procedimientos almacenados tambien son como funciones pero a diferencia de los triggers, no se ejecutan automaticamente, los tienes que llamar como llamar a una funcion en programacion.

Te recomendaria averiguar un poco de eso si es q te interesa. Saludos
Reply
#7

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Que motor de tablas estas ocupando? Que intermediario estas ocupando para conectar tu servidor con MySQL?
Las tablas estбn en InnoDB (creo que a eso te refieres, no soy muy experto en mysql jajaja), pues, el servidor samp y el servidor mysql se encuentran en la misma empresa proveedora, pero en distinta mбquina, asн que uso conexiуn remota.

--

GaBo! Gracias, investigarй sobre eso.
Reply
#8

Si no vas a hacer eliminaciуn de registros, usa "MyISAM" que es mucho mas rбpido en "UPDATE" e "INSERT".
Con lo de "intermediario", me referнa a plugin. Si usas el de blueG, usas el sistema de multi hilo?
Reply
#9

Una consulta a una base de datos es bastante costosa, uses hilos secundarios o lo ejecutes en el principal, hacer eso que planteas es una mala prбctica.

Yo para evitar perder los datos cuando el servidor "crashea", lo que harнa seria almacenar, desde que el jugador se conecta hasta que se desconecta, en un archivo log, las transacciones mas relevantes, como venta o compra de armas, casas, movimientos de dinero, etc... Cuando el jugador salve sus datos en la base de datos al desconectarse, eliminas el archivo. Los accesos/escritura a ficheros son poco costosos y se realizan bastante rбpido.

Si te resulta relativamente complejo interpretar un fichero de log y recuperar la informaciуn dejando la base de datos en un estado no consistente, quizбs deberнas probar alternativas directamente en SQL, como almacenar solo cosas excesivamente importantes, como compras de excesivo costo ... guardar aleatoriamente algъn usuario de nivel mбs alto, o mas bajo si no quieres dar mala imagen.

De todas maneras te aseguro que deberнas evitar las operaciones con la bases de datos, las bases de datos no son para realizar intercambios constantemente, ademбs de eso te recomiendo que revises algъn tema acerca de modelos relacionales para construir tu base de datos, la mayorнa de la gente en esta comunidad cree saber algo de MySQL o bases de datos, y el lenguaje SQL no es mбs que la punta del iceberg de todo un modelo que lleva aсos de estudio, no es muy apropiado para SA-MP la verdad a no ser que almacenes grandes cantidades de datos y te pueda brindar numerosas facilidades el procesar relaciones o eventos automбticos que surjan del tratamiento de los datos.

Lo ideal serнa minimizar los "Crasheos", pero si no puede ser la alternativa del fichero log con las transacciones, que no son mas que acciones del tipo "jug 1 +50$ jug2" y una fecha o algo identificativo, en caso de crashear el server, no se borra, por lo tanto en el proximo inicio podrнas leer todos estos archivos de log y restablecer los datos.
Reply
#10

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Si no vas a hacer eliminaciуn de registros, usa "MyISAM" que es mucho mas rбpido en "UPDATE" e "INSERT".
Con lo de "intermediario", me referнa a plugin. Si usas el de blueG, usas el sistema de multi hilo?
Ah, si, uso la de blueg r39, pero no se si mъlti hilo jajajaja, supongo que si.. Lol
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)