OVH Cloud OVH Cloud

blocage mysql d'un base de données internet, à l'aide svp !

2 réponses
Avatar
ybvj
Bonjour,

j'ai un problème sur mysql.

J'ai un serveur linux avec mysql dessus et qui base de données qui
tourne dessus.

Le problème est que regulierement une de ces base de données se
retrouve bloqué et impossible d'acceder au pages web l'utilisant ni à
phpmyadmin.

Je precise que les autres bases de données reste utilisable.

Je n'ais pas réussi a trouver quel requete faire bloquer mysql ( et
pourtant j'ai cherché), y'a t'il un moyen pour empecher ce type
d'erreur ?

Peut être avec une fonction mysql limitant le temps max d'une requete
???? Si oui comment ???

Sinon comment redemarrer juste une base de données dans mysql pour la
remettre en fonctionnement (et comment redemarrer mysql tout court
d'ailleurs ???) ?

Merci de votre aide car cela devient vraiment génant pour mon site et
je n'arrive pas a m'en sortir seul !

YBVJ

2 réponses

Avatar
Hacavie
suite a mon problème :

Suite aux reponses sur le newsgroup, j'ai configurer mysql avec un
wait_timeout de 60 secondes et j'ai aussi mis sur mes pages php un
set-time-limit.

Malheuresement cela ne semble pas regler mon problème.

Quand je me connecte sur mysql et que je fais un show processlist, je voit
que les requetes s'accumule à cause d'une ou deux requete en cours. Toutes
les autres sont marqué "locked" et le nombre de process augmente vite, 33 en
ce moment !!!

Seul moyen de regler ça, un kill de la requete en cours et c reparti !!

Je sais aussi quel requete pose ce problème , une requete de recherche sur
ma base de données decomposé en trois requete avec creation de table
intermédiaire (on doit pouvoir faire autrement, mais je suis encore débutant
et je n'ais trouver que comme ça).

A tout hasard, si quelqu'un voulais jeter un coup d'oeil dessus je la glisse
dans le message.

REQUETE TIRE DE LA PAGE DE RECHERCHE PHP :
----------------------------------------------------------------------------
------

// recherche sur 1 mots clé dans une table d'index et création table
temporaire
$temp_query = <<< FDT
CREATE TEMPORARY TABLE t_index
SELECT index.num_produit as num FROM `index`
WHERE upper( `text` ) LIKE upper( '%$rech%' )
FDT;
$temp_result = mysql_query($temp_query) or die(mysql_error());

// recherche sur 2eme mots clé dans une table d'index et création table
temporaire 2
$temp_query2 = <<< FDT
CREATE TEMPORARY TABLE t_index2
SELECT index.num_produit as num FROM `index`, `t_index`
WHERE index.num_produit=t_index.num
and upper( `text` ) LIKE upper( '%$rech2%' )
FDT;
$temp_result2 = mysql_query($temp_query2) or die(mysql_error());

// selection des information a afficher en resultat a partir de la table
temporaire en liaison aux autres tables
$query = <<< FDT
SELECT t_index2.num, at.nom nom, fabricant.nom nomf, codeiso.libelle
libelle, at.image, donum.Largeur_siege , at.prix, donum.Poids_max
FROM `t_index2`, codeiso, fabricant, r_iso_produit, at, donum
WHERE t_index2.num=at.num_produit
and fabricant.num_fabricant=at.fabricant
and r_iso_produit.num_produit=at.num_produit
and codeiso.codeiso=r_iso_produit.codeiso
and donum.num_produit=at.num_produit
group by t_index2.num
order by at.nom
FDT;
$result = mysql_query($query) or die(mysql_error());

---------------------------------------------------------

Ensuite j'affiche mes resultats avec une boucle while ...

"ybvj" a écrit dans le message de news:

Bonjour,

j'ai un problème sur mysql.

J'ai un serveur linux avec mysql dessus et qui base de données qui
tourne dessus.

Le problème est que regulierement une de ces base de données se
retrouve bloqué et impossible d'acceder au pages web l'utilisant ni à
phpmyadmin.

Je precise que les autres bases de données reste utilisable.

Je n'ais pas réussi a trouver quel requete faire bloquer mysql ( et
pourtant j'ai cherché), y'a t'il un moyen pour empecher ce type
d'erreur ?

Peut être avec une fonction mysql limitant le temps max d'une requete
???? Si oui comment ???

Sinon comment redemarrer juste une base de données dans mysql pour la
remettre en fonctionnement (et comment redemarrer mysql tout court
d'ailleurs ???) ?

Merci de votre aide car cela devient vraiment génant pour mon site et
je n'arrive pas a m'en sortir seul !

YBVJ
Avatar
M.D
Dans l'article <bothr7$2d9$,
disait...
suite a mon problème :



[...]
and upper( `text` ) LIKE upper( '%$rech2%' )


[...]

Notes:
1. Inutile d'utiliser UPPER sous MySQL avec l'opérateur LIKE ici tu
appelle 2 fois la fonction pour chaque itération => ralentissement
2. Dans le contexte de l'utilisation d'un joker en prefixe (%terme),
l'index ne peut pas etre utilisé (je crois)

--
Marc