#17855

Code Of Conduct

Soit c’est un troll, soit c’est une critique de tous les "code of conduct" absurdes qu’on voit désormais.

J’ai du mal à voir quelqu’un capable de pondre SQLite être aussi con que ça :O

Quoi qu’il en soit, tout ça s’applique aux dév de SQLite (ceux qui font SQLite), pas ceux qui l’utilisent (ni en tant que codeurs qui utilisent SQLite dans le code, ni l’utilisateur final), donc à la limite… osef :) .

https://www.sqlite.org/codeofconduct.html

#17831

[SQLITE] Note : astuce rapide pour + de perfs

Je me mets à optimiser un peu mon lecteur RSS. Pas qu’il soit lent (il tri 70k entrées RSS en 0,22 secondes), mais je viens de trouver un truc.

Dans le lecteur, je fais une requête particulière pour compter le nombre d’éléments non lus pour chaque flux :

SELECT bt_feed, SUM(bt_statut) AS nbrun FROM rss GROUP BY bt_feed

Ensuite, en PHP, je fais une liste des flux avec le nombre d’éléments non-lus associés. Jusque là, rien d’alarmant.

Sauf que la liste des flux utilisée en PHP à ce stade est déjà recyclée. J’ai juste besoin d’une autre requête pour obtenir le nombre d’articles non lus.

Je peux optimiser un peu ma seconde requête :

SELECT bt_feed, SUM(bt_statut) AS nbrun FROM rss WHERE bt_statut = 1 GROUP BY bt_feed

Ici, le « WHERE bt_statut = 1 » signifie qu’il ne doit faire la "somme" que sur les éléments dont le statut est 1 (pas ceux où il est à 0).

Étant donnée que la BDD contient ~69 000 éléments lus (0) et seulement ~1 000 éléments non lus (1), ça revient à sommer sur seulement 1k éléments au lieu de 69k.

Ça me fait gagner environ 10~15 % du temps de la requête : je passe de 0,22 s à 0,19 s. C’est loin d’être du grappillage de micro-secondes.

https://lehollandaisvolant.net/?mode=links&id=20181014161302

#17726

35% Faster Than The Filesystem

Utiliser SQLite permet de gagner ~35 % de performances (en moyenne) pour stocker des fichiers, par rapport à un système de fichier normal.

Le gain de perfs est le plus impressionnant sur W10.

https://www.sqlite.org/fasterthanfs.html

#17158

Scaling SQLite to 4M QPS on a Single Server (EC2 vs Bare Metal) « Expensify Blog

SQLite a le petit problème qu’ils ne peut pas être écrit par deux processus à la fois.

Pourtant, en bricolant un peu et avec les bons softs et les bons réglages, et sur un (très) gros serveur, ils arrivent ici à faire environ 4 millions de requêtes par seconde sur du SQLite.

https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-single-server/

#16152

DBeaver | Free Universal SQL Client

Oh bien !
Un client SQL qui gère tout un tas de SGBD.

C'est parfait à l'heure où le petit SQLite Browser est devenu une usine à gaz qui ne gère plus tout correctement.

http://dbeaver.jkiss.org/

#15872

How do I unlock a SQLite database? - Stack Overflow

Si en SQLite il vous arrive d’avoir une erreur disant que la BDD est verouillée (« General error: 5 database is locked »), c’est que vous avez sûrement manqué de fermer un curseur quelque part.

Vérifiez les fetch() et ajoutez un closeCursor() en dessous de votre boucle.

En PHP par exemple :

$req = $handle->query("SELECT * FROM table");
$data = $req->fetch();

Ajoutez ça à la suite :

$req->closeCursor();

Logique, mais quand on le sait pas on peut toujours chercher…
Les forums sont pleins de cette question spécifique, mais la plupart ont des hacks farfelues (relancer Apache, etc.) qui ne sont pas des solutions.

http://stackoverflow.com/questions/151026/how-do-i-unlock-a-sqlite-database

#14931

Note : si vous utilisez SQLite

Pensez à faire un VACUUM de temps en temps.

Vacuum c’est la commande SQL qui permet de nettoyer la base SQLite.

Par exemple, si vous insérez 500 entrées dans la BDD, le fichier .sqlite prend plus de place. Si maintenant vous virez 499 de ces entrées, le fichier .sqlite ne diminue pas en volume. L’espace est réservé par SQLite pour une utilisation future par SQLite.

En pratique, c’est mieux : SQLite n’aura plus à demander de la place au système de fichier, mais au bout d’un moment la taille du fichier peut-être trop grand par rapport aux données réelles qui sont dans la base.

Vacuum sert justement à reconstruire la base à partir de rien. Un peu comme une défragmentation des données.

Firefox aussi utilise SQLite pour stocker des choses (historique, cookies…). Pensez à appliquer ça une à deux fois par an : http://www.commentcamarche.net/faq/11807-compacter-les-bases-sqlite-de-firefox-3

http://lehollandaisvolant.net/?mode=links&id=20160401203858

#14785

Anton Titov’s blog » “Do not use ORDER BY RAND()” or “How to get random rows from table?”

C’est censé ce qu’il dit (mais ça ne fera pas sens) :

« Let’s say you run this query on a table with 10000 rows, than the SQL server generates 10000 random numbers, scans this numbers for the smallest one and gives you this row »

En gros : n’utilisez pas ORDER BY RAND() en SQL.
SQL va associer un nombre aléatoire, généré pour l’occasion, à chaque entrée de la table, et ensuite prendre le plus petit.
Il y a donc plusieurs opérations : la génération d’autant de nombres aléatoires que d’entrées dans la base, leur tri en ordre croissant et la réponse.

C’est écrit dans l’article, mais la solution à retenir est plutôt de lister le nombre d’entrées dans la base en SQL, générer un nombre aléatoire en PHP (ou dans le langage que vous utilisez) entre 0 et le nombre d’entrées, puis repasser en SQL et sortir l’entrée correspondant à ce nombre. Oui, ça fait deux requêtes, mais c’est beaucoup plus rapide quand même.

Idem pour N entrées : listez les ID des entrées en SQL, utilisez PHP (ou autre) pour en prendre N au hasard, puis utilisez SQL pour les sortir de la base.

En revanche, si votre base fait N entrées et que vous voulez mélanger ces N entrées, je ne vois pas d’inconvénients à utiliser RAND(). Je ne suis pas sûr qu’un array_shuffle() en PHP (ou équivalent) soit plus performant. Dans le cas présent, RAND() est prévu pour ça.

(Je n’ai pas de benchmarks par contre)

http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/

#14485

phpLiteAdmin | An SQLite database management tool

Un équivalent de PhpMyAdmin pour SQLite.

Perso j’utilise le logiciel SQLiteBrowser pour ouvrir à la main mes fichiers SQLite. Il est plus rustique et semble moins puissant, mais on peut lancer des requêtes SQL dessus, ce qui me suffit.

(via)

https://www.phpliteadmin.org/

#14228

Cinq raisons d'utiliser SQLite en 2016

Le mode WAL de la version 3.7 à l’air intéressant : il permet simultanément des lectures et des écritures (alors qu’avant, une écriture était bloquante pour toute autre opération).

Pour un blog, les écritures sont moins probablement moins de 1% des accès (et pour ceux là, un bon vieux cache HTML/Json suffit dans 99% du 1% des cas), donc ça ne se verra pas forcément, mais ailleurs…

Voir aussi l’article d’origine : http://charlesleifer.com/blog/five-reasons-you-should-use-sqlite-in-2016/

http://www.developpez.com/actu/94614/Cinq-raisons-d-utiliser-SQLite-en-2016/

#13892

SqliteBlog | Accueil

Le service précédemment sur blogotext.tk reprend sur sqliteblog.fr.
Il est plus large et propose plusieurs moteurs de blog sous SQLite.

Pour avoir une blog, il suffit d’en faire la demande sur le forum en suivant le modèle.

C’est marrant, ça me fait penser à Webou.net (l’hébergeur sur lequel j’ai commencé), un petit site d’hébergement gratuit pour débuter. Devenu Webou-Pro depuis.

http://sqliteblog.fr/