When the admins set up my new laptop they forgot to enable hibernation manually and the device deep decharged over night.
When the admins set up my new laptop they forgot to enable hibernation manually and the device deep decharged over night.
Integration Tests mit Codeception in Gitlab Pipeline beschleuningen durch optimieren der Datenbankzugriffe.
Vermeiden von Schreibrechteproblemen in php:8.2-fpm Docker Containern
Gnome Shell Extension Draw on Screen - Einfach auf den Desktop zeichnen und schreiben.
In einem Projekt mit Codeception hat sich die Laufzeit mit der Anzahl an neuen Tests stark verlängert.
Eine Analyse mit XDebug und Profiler zeigten, dass die Datenbankzugriffe das Nadelöhr waren.
Bei allen Tests wird in der setUp() Methode die Datenbank mit einigen "TRUNCATE" Tabellen aufrufen geleert.
Datenbanken sind normalerweise nicht für das schnelle "leeren" (truncate) optimiert, sondern,, mit vielen Daten schnell zu arbeiten. In Umfeld eines Integrationstests kann das allerdings sinnvoll sein.
Die Mariadb Doku verweist auf die Einstellung `innodb_file_per_table=OFF` https://mariadb.com/kb/en/inno... um Datenbanken schneller löschen zu können. Bei meinem Setting konnten damit die Tests von 20 auf 6 Minuten beschleunigt werden.
Der Hinweis auf dieses Setting findet sich auch in der Dokumentation https://mariadb.com/kb/en/trun... .
Ich habe mir ein Container extra mit diesem Setting gebaut
Dockerfile
FROM mariadb:10.11.8 COPY mariadb.cnf /etc/mysql/conf.d/my_custom.cnf RUN chmod 644 /etc/mysql/conf.d/my_custom.cnf
mariadb.cnf
[mysqld] ; could be removed with MariaDB 11 innodb_file_per_table=OFF innodb_adaptive_hash_index=OFF
docker build -t mariadb-integration .
Und nun nur noch den gepachten Container in der Pipeline oder lokal verwenden. Um diesen in der Pipeline zu verwenden, muss man diesen natürlich erst in die eigene Registry oder docker Hub ablegen.
Article relase date: / Last update: