
Woher weiß ein Backend-Entwickler, dass eine SQL-Abfrage in der Produktion eine gute Leistung erbringt? In großen oder schnell wachsenden Unternehmen hat nicht jeder Zugang zu dem "Produkt". Und selbst mit Zugriff können nicht alle Anforderungen problemlos überprüft werden, und das Erstellen einer Datenbankkopie dauert oft Stunden. Um diese Probleme zu lösen, haben wir einen künstlichen DBA - Joe erstellt. Es wurde bereits in mehreren Unternehmen erfolgreich implementiert und hat Dutzenden von Entwicklern geholfen.
Video:

Hallo! Ich heiße Anatoly Stansler. Ich arbeite für die Firma Postgres.ai . Wir sind bestrebt, den Entwicklungsprozess zu beschleunigen, indem wir Postgres-Verzögerungen bei Entwicklern, Datenbankadministratoren und QAs beseitigen.
Wir haben großartige Kunden, und heute wird ein Teil des Berichts den Fällen gewidmet sein, die wir während der Arbeit mit ihnen getroffen haben. Ich werde darüber sprechen, wie wir ihnen geholfen haben, einige ziemlich ernste Probleme zu lösen.

, : « ?». review, , DBA-. – .
, , , . , . , , .

- prod - ? . , ? . , .

– prod. , , , - . prod, .

, . , .
?

staging - prod. prod, . , , staging.
- , . . prod.
?
- , staging . , - , – , . Staging . , . . , .
- , , , . . .

, , , - , , . - , , .
, , , - production.

, ? , , .
, ? , .
, , production, , .
, , , , , , . . .

, – . , cloud. 200 . , , . .
, prod .
? , .
.

, , . , 10 , 10 . , , . .

:
– 4,5 .
30 .
, . . , .
. .

OpenZFS.

OpenZFS – copy-on-write , . . . .
:
LVM,
(, Pure Storage).
Database Lab, , . . OpenZFS, LVM .

? , , , , , , .
, - , : «, , - ».
. , .
. , , , , .

, :
– , . production. , , . WAL-E, WAL-G Barman. , - Cloud-, , RDS Cloud SQL, . - , , , production, , .
– , Database Lab. Cloud, On-premise. , ZFS . .
, , , - dev. dev . , 4,5 , ZFS 3,5 . . dev .
.
, DBA , .
QA- , prod. environment QA , . , , , , - , .
. , , .

:
«», .
, .
, . . , .
. prod. .
. .
- , .
, ?

.
, , , . .
, . , ? .

? , , Slack-. .
? . . . . . , - , . .
Slack . , thread , , DBA, .

, , . , , , , .
, - .
, . . . .
production, .

Postgres . . Postgres, . . Shared Buffer Cache.
, Shared Buffer Cache Postgres , .
.

, , . - Shared Buffer Cache – 25 % , .
, , 4 instance, . . 4 . , , , .
, Buffer Cache , , . . , . , .
, prod , Postgres . , SeqScan. , ?
, Postgres Shared Buffer , effective_cache_size.

Effective_cache_size – , , . . Buffer Cache . . .
Postgres, , - , . , production.
. , , :
, prod.
.
, , , .
, , prod, , , , . , . . , , – ( ) , .
, Joe .

. – 1 . , 10 .

, . , 2,5 . , .
B Joe , .
, , . - , , .

, . , , . , 142 .

, , index scan , , ( ), .

- , .

, .

, , 2,5 156 , . 6 .

index only scan.
, - . Flame Graphs.

, . Flame Graphs : , , . . .
. , , .

, explain.depesz.com. , - , , .
, , explain.depesz.com, , .

– explain.dalibo.com. , . , , , -, .

, , Slack . , , , , thread Slack .

, . Update Database Lab, open source. Joe . . .
, - , Delphix, enterprise-. , . Postgres. open source. !
. !
! ! , , . . , .
, ? , . , 10 , , 10 . , . . , , ?
. . - , , , , fail-.
, . . . ? . ?
- ttl . , ttl.
, ?
1 , . . idle – 1 . , . , . , – .
, , , . ZFS? LVM? , c LVM . ? , , .
ZFS? , , . . instances . , . , . . LVM?
LVM meetup. – . ZFS . . . ZFS , Linux . . . . ZFS . , , . , , . . . . , . community, . ZFS – .
: ? , . , – . Pure Storage . .
, . – , , . . , .
ZFS . DelPhix, 300 . fortune 100 — 50 , . . NASA . . . open source Core. , open source. , . , . , . SELECT , . , DBA . . , . , . ZFS, . community , open source . .*
! ! . . . ? : , , - , - job . CPU , IO, ? .
. , ZFS , prod ZFS, ext4, . ?
. , . . , staging . , - , - . . prod. - , - – , , , - .
, , . , , , -, . , . , - .
. . , production , , ? - ? – - MySQL?
. , . Joe, , . ? Joe . , . , – . , .
MySQL. , state . Postgres, Postgres. . Postgres. , , . .
, MySQL. . , . .. MySQL . , ZFS.
! . , , , . , ?
, . , Postgres. ?
, , . , , , prod . - . prod, , prod , .
, , . , , .
?
, , , . . . , .
, , , , . , . . .
. cloud- , , Google, Amazon . .
. MySQL . , , , , . , , , , Postgres, , , instance.
. , . , , , . . , . 100 , . ? , , , , ?
, ZFS . , . , . , .
, , , , ?
, .
, , , ?
, .
. ?
, . - . . , . , . . data corruption . , , . . , .
, ! Joe . , . , Explain Analyze, .
. , : «SELECT FROM WHERE email = ». . . , - . . . , , , . - , .
! ! . Slack , - instances, ?
Jetzt gibt es eine Bindung zu Slack, das heißt, es gibt keinen anderen Messenger, aber ich möchte wirklich auch andere Messenger unterstützen. Was kannst du tun? Sie können DB Lab ohne Joe bereitstellen, die REST-API oder unsere Plattform verwenden, Klone erstellen und eine Verbindung mit PSQL herstellen. Sie können dies jedoch tun, wenn Sie bereit sind, Ihren Entwicklern Zugriff auf die Daten zu gewähren, da kein Bildschirm mehr angezeigt wird.
Ich brauche diese Schicht nicht, aber ich brauche eine solche Gelegenheit.
Dann - ja, es kann getan werden.