JeuWeb - Crée ton jeu par navigateur
phpmydamin - sql definir la taille max d'une table - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : phpmydamin - sql definir la taille max d'une table (/showthread.php?tid=6828)

Pages : 1 2


phpmydamin - sql definir la taille max d'une table - starmindfr - 10-01-2014

Bonjour

Petite question j'ai par exemple une table sql "tchat" avec le contenu du tchat du jeu, mais pour éviter de prendre trop de place en base (notamment si quelqu’un flood a mort le tchat) je voudrait trouver un moyen de limiter cette table par exemple a 1 Mo

Mais je ne trouve rien la dessus dans les docs... il y a un moyen simple de gérer la taille d'une table ?

merki Big Grin


RE: phpmydamin - sql definir la taille max d'une table - MadMass - 10-01-2014

A mon avis c'est une mauvaise idée, mieux vaut intégrer des règles de suppression (du genre les messages plus vieux de x secondes ou au bout de x messages).
Parce qu'il existe un système similaire pour les tables heap (les tables en mémoire) dont la taille maximale est limitée par une variable dans my.cnf, et par expérience, lorsque mysql n'a plus de place, il supprime rien, il se contente de ne plus ajouter. Donc un flood pourrirait tout le système :p
DONC je pense que faire ça à la mano, c'est plus sûr.
(Soit dit en passant si c'est du chat, les tables heap sont tout à fait appropriées, car on s'en fout de tout perdre en cas de crash du sql, et ça permet d'économiser les accès disques sur un module qui est fréquemment appelé). Faut juste limiter le nombre d'entrées sous peine de remplir de la RAM pour rien, et je crois qu'on peut pas stocker des varchar de plus de 500 caractères.


RE: phpmydamin - sql definir la taille max d'une table - niahoo - 10-01-2014

Je plussoie, table en RAM c'est bien et si tu n'as pas cette possibilité selon ton hébergement, faire un script qui nettoie toutes les minutes. Même en RAM la suppression sera nécessaire si le fonctionnement est simplement de bloquer les nouvelles entrées quand la limite est atteinte.

Si tu veux garder une trace, tu peux simplement, en plus de ta base de données, écrire tous les messages dans un simple fichier de log. Le mieux est de le faire par lot, au moment du nettoyage par exemple.


RE: phpmydamin - sql definir la taille max d'une table - starmindfr - 11-01-2014

humm j'ai commencer a regarder je ne trouve pas d'option dans ce sens (ram) sous phpmyadmin. En effet je pourrait faire tourner un script sql lié a un cron mais ca va rester sur quelques minutes, c'est deja pas mal mais pas ideal.

J'aurais bien aimer faire une limit sur l'index en auto increment de la table c'est un INT(11) mais visiblement si je met INT(1) pour forcer une limite de ligne ca ne fonctionne pas.


RE: phpmydamin - sql definir la taille max d'une table - MadMass - 11-01-2014

Dans phpmyadmin faut aller dans opérations et choisir comme moteur de stockage de la table "MEMORY". Ca impose certaines restrictions, comme :
- Un nombre de caractères maximal sur les varchar aux alentours de 500 (de mémoire)
- Certains types de champs pas disponibles
- Impossibilité pour la table de dépasser la taille fixée pour les tables HEAP dans my.cnf (MAX_HEAP_TABLE_SIZE la variable)
- Perte de la table en cas de reboot/crash du serveur mysql
- Pas trop déconner avec les index parce que ça prend beaucoup de place, sur une grosse table ça peut vite se sentir :p

EDIT : ça sert à rien de vouloir limiter du côté de MySQL. C'est une source d'erreurs/bugs/surcharge/c'est dégueulasse et de toute façon MySQL préférera ne rien faire plutôt qu'effacer une donnée existante. Faut limiter dans le script lui-même, c'est à dire effacer des entrées à chaque insert ou avec une tâche cron en fonction des besoins Smile


RE: phpmydamin - sql definir la taille max d'une table - t.bodeux - 12-01-2014

Pourquoi utiliser une base de donnée pour un chat alors qu'on peut tout faire en temps réel sans encombre au point de vue stockage.


RE: phpmydamin - sql definir la taille max d'une table - MadMass - 12-01-2014

Parce que peut-être que dans ce cas de figure c'est une solution inadaptée ? Des moyens y'en a plein, là on parle pas des différents moyens de faire un chat mais de la config de la db si on choisit de faire un chat + db.


RE: phpmydamin - sql definir la taille max d'une table - vol-au-vent - 12-01-2014

Ton hébergeur acceptera l'utilisation de ta DB pour faire un chat ? Attention tu risques peut-être d'avoir des surprises !


RE: phpmydamin - sql definir la taille max d'une table - t.bodeux - 12-01-2014

Il s'agit d'une simple question, le développement d'un jeu, au final, se résume à trouver l'outil le plus adapté à une tâche donnée. J'entend par là que parfois on planche sur des questions technique de l'outil avant d'avoir bien réfléchit à la nécessité de l'utilisation ce même outil.


RE: phpmydamin - sql definir la taille max d'une table - MadMass - 12-01-2014

Par temps réel, tu fais allusion à quel type de techno ?