J'attends surtout la démonstration comme quoi il est impossible que ça marche.
Je constate toutes les semaines que des backups consistants sont pris à chauds sans lock et I impacts majeurs sur les performances grâce à xtrababackup ou mariadb.
J'attends donc de savoir comment un tel miracle peux se produire quotidiennement autour du globe alors que c'est censé ne pas fonctionner. Pour l'instant le seul cas documenté est à côté de la plaque.
Des problèmes de consistances et des problèmes de locks (cf. footnote 1).
L'éditeur même de la solution le dit. Il te faut quoi de plus ?
SQLPro donne un cas d'expérience pour lequel cela ne fonctionne pas. Mais non, c'est une mauvaise utilisation car "à coté de la plaque".
Maintenant, ça ne veut pas dire que les backup ne fonctionnent pas correctement de manière générale, mais qu'il peut y avoir des cas où, tu penses avoir backuper, et tu as des données corrompues. Tu penses faire un backup sans lock, mais tu te retrouves quand même à avoir un lock de quelques secondes. Pour un site web (majeur partie de l'utilisation de MySQL/MariaDB), ce n'est rien, un "désagrément" pour l'utilisateur qui se remarquera à peine voir pas du tout, mais cela ne signifie pas qu'il n'existe pas.
Je t'invite fortement à le faire. Tu pourras ainsi constater par toi-même.
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
L'éditeur indique qu'il y a des problemes de verrouillage quand on backup des tables utilisant un moteur autre qu'innodb en effet. Ce qui n'est pas étonnant car xtrabackup à été créé au départ pour backup innodb.
De la a affirmer que mariadb ne sait pas faire de backup consistant non bloquant c'est un peu fort. Dans certaines conditions ce n'est pas possible est la seule affirmation juste en la matière.
Non. cela signifie que le backup des tables InnoDB est non-bloquant, mais que le backup des logs bloque ces tables.
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
Si tu veux faire un test correct, installe directemennt MariaDB 10.x sur ton poste de travail. WAMP installe MariaDB avec son propre fichier my.ini dans lequel il y a souvent des réglages qui sont indésirables en prod, faut pas oublier que c'est conçu pour développer rapidement un petit site WEB en Php sans trop se poser de questions, perso j'utilise jamais ça... Ensuite utilise HeidiSQL (livré avec MariaDB) comme client pour tester...
..et de comprendre ce que cela signifie. Pour être efficace, il est nécessaire d'avoir un serveur compatible. Or, seul Percona Server implémente la fonctionalité indispensable pour cela, ce qui n'est pas le cas de MariaDB qui déconseille fortement son utilisation.
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
Deux cas sont à distinguer :
- l'utilisation directe, alors c'est de la responsabilité de l'exploitant. Par exemple l'entreprise qui a choisit le libre pour développer une application "maison".
- L'éditeur de logiciel. Vu qu'il vend, c'est de sa responsabilité, car il a imposé une solution dont il a l'intégralité de la responsabilité.
Dans le cas du monde commercial, l'éditeur peut se retourner contre le fabricant du SGBDR….
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Pour moi c'est pas très clair.Non. cela signifie que le backup des tables InnoDB est non-bloquant, mais que le backup des logs bloque ces tables.
En regardant la doc :https://www.percona.com/doc/percona-...read-lock.html
Cela rejoint ce qui a été expliqué, blocage de tables. Des option permettent de pallier cela. Mais je ne sais pas les conséquences. Percona peut même killer les requêtes trop longues pour mettre son verrou, un peu violent (mais c'est une option éventuellement envisageable pour un SELECT tant qu'on gère en amont). On peut tout a fait comprendre qu'avec un usage intensif sur une base, il peut être difficile de poser un verrou quand il n' a aucune requête active. Et autre problème aussi, le délai de pose de ce verrou. Mais d'un autre coté, la pose de verrou lui-même doit se faire en micro-secondes.
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Bien sur que si c'est possible ! SQL Pro donne d'ailleurs le code pour y arriver dans son article
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
"ALTER TABLE" me disait le contraire.
Et j'ai testé le code de SQLPro, pas vraiment de clé étrangère créée , ce qui est signifié dans la doc https://mariadb.com/kb/en/library/foreign-keys/
Le bienfait n'est jamais perdu
C'est très étonnant ce choix de la part de MariaDB, d'accepter une syntaxe mais de ne rien faire derrière (alors que la fonctionnalité est implémentée via une autre syntaxe).
Voici le script que j'ai utilisé pour faire un test :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 CREATE SCHEMA s1; CREATE SCHEMA s2; CREATE TABLE s1.t1 ( id INT AUTO_INCREMENT, CONSTRAINT pk PRIMARY KEY(id) ) ENGINE= InnoDB; CREATE TABLE s2.t2 ( id INT NOT NULL, ref INT NOT NULL, CONSTRAINT fk2 FOREIGN KEY(ref) REFERENCES s1.t1(id) ) ENGINE= InnoDB; INSERT INTO s2.t2(id, ref) VALUES (1, 1);
J'ai testé sur MySQL (v5.7.26) et MariaDB (10.3.14).
MySQL ne bronche aucunement et permet l'insertion d'une ligne en violation complète de la clé étrangère.
MariaDB gueule (comportement attendu d'un SGBD).
Donc, le coup de la clé étrangère n'est a priori valable que pour MySQL, et non pour MariaDB.
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
MYSQL 5.7.11 et MariaDB j'ai ça
Erreur dans la requête (1452): Cannot add or update a child row: a foreign key constraint fails (`s2`.`t2`, CONSTRAINT `fk2` FOREIGN KEY (`ref`) REFERENCES `s1`.`t1` (`id`))
Le bienfait n'est jamais perdu
François, l faudrait peut-être tester avec la version 8.J'ai testé sur MySQL (v5.7.26)
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Effectivement, avec la version 8, j'ai une erreur. Certaines choses ont semble-t-il été corrigées.
Est-ce que cela change ma position sur MySQL/MariaDB ? Pas vraiment. Car je trouve que cela est quand même révélateur d'un gros problème : la prise en compte des contraintes de clé étrangères dépend de la syntaxe utilisée. La déclaration au niveau d'une colonne est ignorée, et seule la déclaration au niveau de la table est prise en compte. C'est quand même un gros manquement, surtout que les deux déclarations syntaxes font parti de la norme pour une fonctionnalité aussi essentielle.
Le pire dans tout ça, c'est que la syntaxe de déclaration au niveau de la colonne est supportée mais est sans effet. A ce titre, il vaudrait mieux que cela génère une erreur afin que l'utilisateur sache que sa requête n'a pas l'effet escompté et que la contrainte n'est pas créée.
Qui me dit qu'il n'y a pas d'autres aspects "de base" qui sont partiellement implémentées syntaxiquement parlant ?
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager