Posts: 169
Threads: 40
Joined: Oct 2011
Reputation:
0
Actualmente uso SqLite para un servidor freeroam, y a pesar de ese modo de juego uso muchos datos de guardado solo para los usuarios, unos 50 y va en aumento y a pesar de eso me va bien, pero estoy agregando funciones de listas y tops y eso genera muchas consultas, agregбndole a eso tengo sistemas de baneos, casas, zonas, posiciones, de tuneo, clanes, etc y todos ellos con consultas en /zonas, /clanes, /tops de todo tipo y a la larga no serнa conveniente para un SQLite que trabaja una consulta a la vez, agregбndole a eso que quisiera ponerle carreras, u otro tipos de guardados y en lo ue mбs se demora es en el cambio de nickname, pues debe buscar todas las tablas que contengan dicho nickname para cambiarla.
No pienso hacerle un CPU porque no tengo idea como se hace, ni php sй, quizб un pequeсo sistema de compra por paypal luego e_e
Quiero tener un gm completo donde se usa mucho las lecturas, escrituras, consultas, etc de un sistema de guardado de datos y sй que MySql es el mбs conveniente porque trabaja con muchas consultas a la vez y puedes guardar infinidades de datos.
El problema aquн es que eh visto un sin nъmero de sistemas MySql, que diferentes plugins, que diferentes versiones, que librerнa, que non-threaded, muchas formas de scripts, etc ._. y quisiera saber la mбs optimizada y que no me de algъn problema con ello їCuбl me convendrнa mбs? Y si me podrнan dar un ejemplo o un fs u gm base para basarme de ello.
Posts: 836
Threads: 0
Joined: Dec 2010
Reputation:
0
No te preocupes, SQLite puede manejar mucha informaciуn si bien podrнas optimizar tu base de datos, el nombre del jugador solo deberнa estar registrado en una tabla con su respectivo ID de usuario, tambiйn acuerdate de usar BEGIN y COMMIT para hacer varios inserts de forma eficiente, mбs que todo si te esta generando lag es por el mal diseсo de tu base de datos.
Posts: 4,759
Threads: 33
Joined: Dec 2013
Reputation:
0
No hace falta cambiar a MySQL.
Posts: 169
Threads: 40
Joined: Oct 2011
Reputation:
0
Pero es lo mismo la id o un nickname aunque supongo que con un entero va mбs rбpido.
Por otro lado: error 017: undefined symbol "BEGIN"
Y ese loop no lo entiendo: for(new i=0; i < 1000; i++)
Edito: Ya vi, creу una tabla y puso 1000 columnas con esso valores y se demorу en 105 ms.
Pero no tendrнa sentido si cada columna se crea por cada usuario que se registra xD
Si me podrнas dar otro ejmplo del BEGIN te lo agradecerнa, y ya vi como usar la id de usuario, pues al cambiar de nickname por ejemplo, no necesitarнa buscar las otras tablas ya que la id no cambia >< Aunque en caso como el sistema de propiedades si debo ponerle el nick, pues tendrнa que mostrar el nick en el label de cada propiedad y no una id e_e
Posts: 526
Threads: 29
Joined: May 2009
La verdad recomiendo mysql r-39 es muy practico
Posts: 69
Threads: 4
Joined: Feb 2016
Reputation:
0
Realmente es un problema, las operaciones de archivos son pesadas, no importa que uses y_ini, dini, mysql, o sqlite. La mejor soluciуn a este problema es usar diferentes hilos que ejecuten consultas, que es exactamente lo que hace el plugin mysql de blueG.
Con respecto al diseсo de la base de datos, lo mas importante es que indexes la columna que usas para identificar la tabla, si no, el motor debe comparar los resultados uno por uno.
Si tenes muchos usuarios (o muchas operaciones de db) me parece que deberias usar sqlite solamente para cosas que no se llaman tan seguido y MySQL para las demбs, usando mysql_pquery.
Otra cosa que va a hacer las consultas mas rбpidas, es usar un disco SSD.
Posts: 4,759
Threads: 33
Joined: Dec 2013
Reputation:
0
Como dije anteriormente, no hace falta cambiar a MySQL.
Con SQLite lo puedes armar, y es la forma en que yo lo haria. No me gusta el MySQL en SA-MP, pero ya que...
Como ha mensionado Daniel-92, nomas necesitas usar el nombre del jugador en una declaracion de SQL una vez. En esa declaracion, obtienes el SQL ID del jugador, el cual es unico y irepetible. Y a partir de ahi, osea, en otras declaraciones, utilizas el SQL ID en vez del nombre del jugador. Esto hara el proceso mas rapido ya que es un entero y ademas es un valor unico.
Si necesitas actualizar varios tablas a la vez, utiliza la clausura JOIN de SQL. Una clбusula JOIN de SQL combina registros de dos o mбs tablas en una base de datos relacional. Se crea un conjunto que se puede guardar como una tabla o utilizar tal cual.
Con todo eso ya lo armas. Y te seguro no tendras problemas con lag o algo por el estilo.
Si correr 100 declaraciones de SQL a la misma vez usando SQLite (guardar las estadisticas de los jugadores), no causa lag, menos esto...
Suerte.