Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 um 17:54 schrieb Andreas Kretschmer: > laut > https://stackoverflow.com/questions/8538636/does-mysql-foreign-key-checks-affect-the-entire-database > betrifft das nur die aktuelle Session, es geht aber auch global zu setzen. Zumindest mit MariaDB gibt es die Möglichkeit mit SET @@SESSION@FOREIGN_KEY = 0 (oder ähnlich, bin nicht mehr im Büro). Ein paar Tests haben mir bestätigt, dass in einer anderen Session ist die Foreign-Key-Prüfung aktiv... Grüße Luca
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.20 um 14:45 schrieb Luca Bertoncello: Vielleicht hatte ich doch noch einen Satz auf Latein übrig... Ich habe also probiert temporär die ForeignKey-Prüfung zu deaktivieren. Pof! Es wird nichts mehr blockiert... Kurz über unsere DB-Struktur: - Tabelle "meta" mit statischen Daten (eine autoinkrementelle ID als PK) - Tabellen "value_current" und "value_aggregat1" mit den Werten und eine Referenz an meta. Diese ist die FK, natürlich Sobald ich SET FOREIGN_KEY_CHECKS=0; bei der Aggregation der Daten habe, wird keine fremde SQL-Anfrage mehr blockiert... Ich frage mich, ob es aber eine bessere Lösung gibt, denn, so wie ich weiß, ich kann diese Prüfung nur "instanzweit" deaktivieren, also während der Aggregation wäre es theoretisch möglich Daten in "value_current" einzutragen, die keine entsprechenden Satz in "meta" haben... laut https://stackoverflow.com/questions/8538636/does-mysql-foreign-key-checks-affect-the-entire-database betrifft das nur die aktuelle Session, es geht aber auch global zu setzen. Gruselig. Andreas -- 2ndQuadrant - The PostgreSQL Support Company. www.2ndQuadrant.com
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 14:25, schrieb Luca Bertoncello: Am 05.03.2020 14:23, schrieb Falk Herzog: Siehst Du richtig, wenn er 300MB schreiben kann, ist das zumindest wohl nicht der Flaschenhals. Dann bin ich am Ende mit meinem Latein. Und auch mit dem Griechisch... Wenn jemand eine Idee hat, dann bitte! Vielleicht hatte ich doch noch einen Satz auf Latein übrig... Ich habe also probiert temporär die ForeignKey-Prüfung zu deaktivieren. Pof! Es wird nichts mehr blockiert... Kurz über unsere DB-Struktur: - Tabelle "meta" mit statischen Daten (eine autoinkrementelle ID als PK) - Tabellen "value_current" und "value_aggregat1" mit den Werten und eine Referenz an meta. Diese ist die FK, natürlich Sobald ich SET FOREIGN_KEY_CHECKS=0; bei der Aggregation der Daten habe, wird keine fremde SQL-Anfrage mehr blockiert... Ich frage mich, ob es aber eine bessere Lösung gibt, denn, so wie ich weiß, ich kann diese Prüfung nur "instanzweit" deaktivieren, also während der Aggregation wäre es theoretisch möglich Daten in "value_current" einzutragen, die keine entsprechenden Satz in "meta" haben... Vorschläge? Danke Luca Bertoncello (lucab...@lucabert.de)
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 14:23, schrieb Falk Herzog: Siehst Du richtig, wenn er 300MB schreiben kann, ist das zumindest wohl nicht der Flaschenhals. Dann bin ich am Ende mit meinem Latein. Und auch mit dem Griechisch... Wenn jemand eine Idee hat, dann bitte! Danke Luca Bertoncello (lucab...@lucabert.de)
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Siehst Du richtig, wenn er 300MB schreiben kann, ist das zumindest wohl nicht der Flaschenhals. Grüße On 3/5/20 2:10 PM, Luca Bertoncello wrote: > Am 05.03.2020 14:02, schrieb Falk Herzog: > > Hallo Falk, > >> dstat kannte ich noch nicht. Alternativ mal atop, ob was rot leuchtet? >> Taste d für Disk-IO. > > Und was mir einfällt ist, dass WRDSK bei 190M ist... > Ist es zu viel? > >> Und hast du einfach mal mit dd was auf die MySQL-Partition gefeuert um >> zu sehen was maximal möglich ist? >> ( >> https://www.thomas-krenn.com/de/wiki/Linux_I/O_Performance_Tests_mit_dd >> ) > > # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=direct > 1+0 records in > 1+0 records out > 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.46195 s, 310 MB/s > > (wir haben nur eine Partition, also /root ist auf derselben Partition > wie /var/lib/mysql) > > Also, ich sehe, dass die Kiste in der Lage ist, 310MB/s zu schreiben. > In diesem Sinne wären die 29MB von MySQL kaum was, oder verstehe ich > falsch? > > Danke > Luca Bertoncello > (lucab...@lucabert.de) >
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 14:02, schrieb Falk Herzog: Hallo Falk, dstat kannte ich noch nicht. Alternativ mal atop, ob was rot leuchtet? Taste d für Disk-IO. Und was mir einfällt ist, dass WRDSK bei 190M ist... Ist es zu viel? Und hast du einfach mal mit dd was auf die MySQL-Partition gefeuert um zu sehen was maximal möglich ist? ( https://www.thomas-krenn.com/de/wiki/Linux_I/O_Performance_Tests_mit_dd ) # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=direct 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.46195 s, 310 MB/s (wir haben nur eine Partition, also /root ist auf derselben Partition wie /var/lib/mysql) Also, ich sehe, dass die Kiste in der Lage ist, 310MB/s zu schreiben. In diesem Sinne wären die 29MB von MySQL kaum was, oder verstehe ich falsch? Danke Luca Bertoncello (lucab...@lucabert.de)
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Moin Luca, dstat kannte ich noch nicht. Alternativ mal atop, ob was rot leuchtet? Taste d für Disk-IO. Und hast du einfach mal mit dd was auf die MySQL-Partition gefeuert um zu sehen was maximal möglich ist? ( https://www.thomas-krenn.com/de/wiki/Linux_I/O_Performance_Tests_mit_dd ) Grüße, Falk On 3/5/20 1:55 PM, Luca Bertoncello wrote: > Am 05.03.2020 13:54, schrieb Luca Bertoncello: > > Verzeihung, ich sehe gerade, dass ich die erste Zeile (mit der > Erklärung) nicht kopiert habe... > > Also: > > ---cpu0-usage--cpu1-usage--cpu2-usage--cpu3-usage-- > --dsk/vda-- --net/eth0net/eth1net/eth2- ---paging-- ---system-- > usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq > siq:usr sys idl wai hiq siq| read writ| recv send: recv send: recv > send| in out | int csw > 39 26 36 0 0 0: 89 4 7 0 0 0: 34 31 35 0 0 > 0: 26 22 48 3 0 0| 0 616k|3148B 3463B:4434B 3828B: 0 > 0 | 0 0 |2486 3715 > 91 5 4 0 0 0: 38 27 34 0 0 0: 31 36 32 0 0 > 0: 40 21 33 4 0 1| 0 876k| 52k 58k:4092B 3816B: 0 > 0 | 0 0 |3052 4337 > 43 15 40 2 0 0: 22 23 55 0 0 0: 41 14 44 0 0 > 1: 40 8 35 16 0 0| 0 13M| 59k 50k:4866B 4370B: 0 > 0 | 0 0 |3637 4798 > 20 1 79 0 0 0: 23 2 74 1 0 0: 0 0 100 0 0 > 0: 48 3 39 9 0 0| 0 15M| 13k 9382B: 260B 0 : 0 > 0 | 0 0 | 627 578 > 0 0 100 0 0 0: 41 2 57 0 0 0: 0 0 100 0 0 > 0: 44 6 37 13 0 0| 0 21M| 202B 202B: 330B 0 : 0 > 0 | 0 0 | 429 338 > 0 1 99 0 0 0: 56 4 38 2 0 0: 30 2 68 0 0 > 0: 2 0 87 11 0 0| 0 19M|1022B 402B: 260B 0 : 0 > 0 | 0 0 | 713 533 > 2 1 97 0 0 0: 1 1 98 0 0 0: 90 4 5 1 0 > 0: 0 0 90 10 0 0| 0 21M|1078B 3150B: 190B 42B: 0 > 0 | 0 0 | 429 307 > 0 0 100 0 0 0: 6 3 90 1 0 0: 82 7 10 1 0 > 0: 0 0 90 10 0 0| 0 21M| 610B 502B: 570B 42B: 0 > 0 | 0 0 | 440 282 > 1 0 99 0 0 0: 0 0 100 0 0 0: 85 6 5 4 0 > 0: 2 1 88 9 0 0| 0 8692k| 14k 9638B: 330B 0 : 0 > 0 | 0 0 | 605 655 > 1 0 99 0 0 0: 0 1 98 1 0 0: 88 7 4 1 0 > 0: 0 0 89 11 0 0| 0 21M|1190B 1835B: 130B 0 : 0 > 0 | 0 0 | 479 390 > 1 1 98 0 0 0: 1 2 96 1 0 0: 88 6 5 1 0 > 0: 0 0 89 11 0 0| 0 22M| 502B 636B: 260B 0 : 0 > 0 | 0 0 | 453 437 > 0 0 99 0 0 1: 1 1 97 1 0 0: 87 7 5 1 0 > 0: 2 1 86 11 0 0|4096B 22M|1078B 346B: 130B 0 : 0 > 0 | 0 0 | 462 372 > 2 1 97 0 0 0: 8 4 87 1 0 0: 82 3 14 1 0 > 0: 1 0 87 12 0 0| 0 25M|3136B 2928B: 390B 0 : 0 > 0 | 0 0 | 562 536 > 9 2 89 0 0 0: 6 6 88 0 0 0: 82 6 11 1 0 > 0: 5 6 78 11 0 0| 0 22M| 12k 9040B: 130B 0 : 0 > 0 | 0 0 |1034 1292 > 14 2 84 0 0 0: 3 2 93 1 0 1: 72 8 19 1 0 > 0: 7 9 78 6 0 0| 0 15M| 956B 556B: 260B 0 : 0 > 0 | 0 0 | 849 1000 > 30 2 68 0 0 0: 4 2 93 0 0 1: 28 2 70 0 0 > 0: 26 2 65 7 0 0| 0 17M| 538B 1848B:4254B 6354B: 0 > 0 | 0 0 | 722 579 > 89 5 5 1 0 0: 1 1 97 1 0 0: 2 1 96 0 0 > 1: 0 0 89 11 0 0| 0 20M| 956B 396B: 650B 0 : 0 > 0 | 0 0 | 499 410 > 64 3 31 2 0 0: 0 0 99 1 0 0: 0 0 100 0 0 > 0: 28 2 63 7 0 0| 0 22M|1210B 3340B: 260B 0 : 0 > 0 | 0 0 | 496 391 > 2 0 98 0 0 0: 1 1 97 1 0 0: 0 0 100 0 0 > 0: 88 5 3 4 0 0| 0 22M| 12k 7436B: 130B 0 : 0 > 0 | 0 0 | 558 462 > 0 0 100 0 0 0: 1 2 94 3 0 0: 81 7 11 1 0 > 0: 18 1 79 2 0 0| 0 21M|2730B 2021B: 130B 0 : 0 > 0 | 0 0 | 473 395 > 0 0 100 0 0 0: 0 0 89 11 0 0: 86 6 7 1 0 > 0: 6 1 92 0 0 1| 0 17M|1297B 1027B: 520B 0 : 0 > 0 | 0 0 | 518 453 > 0 0 100 0 0 0: 2 1 91 6 0 0: 89 5 5 1 0 > 0: 0 0 100 0 0 0| 0 12M| 360B 1636B: 260B 0 : 0 > 0 | 0 0 | 410 318 > 2 1 96 1 0 0: 2 4 83 11 0 0: 88 5 6 1 0 > 0: 0 0 98 2 0 0| 0 21M|1190B 1920B: 260B 0 : 0 > 0 | 0 0 | 512 531 > 0 0 99 1 0 0: 4 4 80 12 0 0: 82 5 12 1 0 > 0: 1 1 98 0 0 0| 0 29M| 13k 7730B:4260B 6441B: 0 > 0 | 0 0 | 659
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 13:54, schrieb Luca Bertoncello: Verzeihung, ich sehe gerade, dass ich die erste Zeile (mit der Erklärung) nicht kopiert habe... Also: ---cpu0-usage--cpu1-usage--cpu2-usage--cpu3-usage-- --dsk/vda-- --net/eth0net/eth1net/eth2- ---paging-- ---system-- usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ| recv send: recv send: recv send| in out | int csw 39 26 36 0 0 0: 89 4 7 0 0 0: 34 31 35 0 0 0: 26 22 48 3 0 0| 0 616k|3148B 3463B:4434B 3828B: 0 0 | 0 0 |2486 3715 91 5 4 0 0 0: 38 27 34 0 0 0: 31 36 32 0 0 0: 40 21 33 4 0 1| 0 876k| 52k 58k:4092B 3816B: 0 0 | 0 0 |3052 4337 43 15 40 2 0 0: 22 23 55 0 0 0: 41 14 44 0 0 1: 40 8 35 16 0 0| 013M| 59k 50k:4866B 4370B: 0 0 | 0 0 |3637 4798 20 1 79 0 0 0: 23 2 74 1 0 0: 0 0 100 0 0 0: 48 3 39 9 0 0| 015M| 13k 9382B: 260B0 : 0 0 | 0 0 | 627 578 0 0 100 0 0 0: 41 2 57 0 0 0: 0 0 100 0 0 0: 44 6 37 13 0 0| 021M| 202B 202B: 330B0 : 0 0 | 0 0 | 429 338 0 1 99 0 0 0: 56 4 38 2 0 0: 30 2 68 0 0 0: 2 0 87 11 0 0| 019M|1022B 402B: 260B0 : 0 0 | 0 0 | 713 533 2 1 97 0 0 0: 1 1 98 0 0 0: 90 4 5 1 0 0: 0 0 90 10 0 0| 021M|1078B 3150B: 190B 42B: 0 0 | 0 0 | 429 307 0 0 100 0 0 0: 6 3 90 1 0 0: 82 7 10 1 0 0: 0 0 90 10 0 0| 021M| 610B 502B: 570B 42B: 0 0 | 0 0 | 440 282 1 0 99 0 0 0: 0 0 100 0 0 0: 85 6 5 4 0 0: 2 1 88 9 0 0| 0 8692k| 14k 9638B: 330B0 : 0 0 | 0 0 | 605 655 1 0 99 0 0 0: 0 1 98 1 0 0: 88 7 4 1 0 0: 0 0 89 11 0 0| 021M|1190B 1835B: 130B0 : 0 0 | 0 0 | 479 390 1 1 98 0 0 0: 1 2 96 1 0 0: 88 6 5 1 0 0: 0 0 89 11 0 0| 022M| 502B 636B: 260B0 : 0 0 | 0 0 | 453 437 0 0 99 0 0 1: 1 1 97 1 0 0: 87 7 5 1 0 0: 2 1 86 11 0 0|4096B 22M|1078B 346B: 130B0 : 0 0 | 0 0 | 462 372 2 1 97 0 0 0: 8 4 87 1 0 0: 82 3 14 1 0 0: 1 0 87 12 0 0| 025M|3136B 2928B: 390B0 : 0 0 | 0 0 | 562 536 9 2 89 0 0 0: 6 6 88 0 0 0: 82 6 11 1 0 0: 5 6 78 11 0 0| 022M| 12k 9040B: 130B0 : 0 0 | 0 0 |1034 1292 14 2 84 0 0 0: 3 2 93 1 0 1: 72 8 19 1 0 0: 7 9 78 6 0 0| 015M| 956B 556B: 260B0 : 0 0 | 0 0 | 849 1000 30 2 68 0 0 0: 4 2 93 0 0 1: 28 2 70 0 0 0: 26 2 65 7 0 0| 017M| 538B 1848B:4254B 6354B: 0 0 | 0 0 | 722 579 89 5 5 1 0 0: 1 1 97 1 0 0: 2 1 96 0 0 1: 0 0 89 11 0 0| 020M| 956B 396B: 650B0 : 0 0 | 0 0 | 499 410 64 3 31 2 0 0: 0 0 99 1 0 0: 0 0 100 0 0 0: 28 2 63 7 0 0| 022M|1210B 3340B: 260B0 : 0 0 | 0 0 | 496 391 2 0 98 0 0 0: 1 1 97 1 0 0: 0 0 100 0 0 0: 88 5 3 4 0 0| 022M| 12k 7436B: 130B0 : 0 0 | 0 0 | 558 462 0 0 100 0 0 0: 1 2 94 3 0 0: 81 7 11 1 0 0: 18 1 79 2 0 0| 021M|2730B 2021B: 130B0 : 0 0 | 0 0 | 473 395 0 0 100 0 0 0: 0 0 89 11 0 0: 86 6 7 1 0 0: 6 1 92 0 0 1| 017M|1297B 1027B: 520B0 : 0 0 | 0 0 | 518 453 0 0 100 0 0 0: 2 1 91 6 0 0: 89 5 5 1 0 0: 0 0 100 0 0 0| 012M| 360B 1636B: 260B0 : 0 0 | 0 0 | 410 318 2 1 96 1 0 0: 2 4 83 11 0 0: 88 5 6 1 0 0: 0 0 98 2 0 0| 021M|1190B 1920B: 260B0 : 0 0 | 0 0 | 512 531 0 0 99 1 0 0: 4 4 80 12 0 0: 82 5 12 1 0 0: 1 1 98 0 0 0| 029M| 13k 7730B:4260B 6441B: 0 0 | 0 0 | 659 701 0 0 94 6 0 0: 2 3 95 0 0 0: 91 3 5 1 0 0: 0 3 97 0 0 0| 014M| 304B 1644B: 650B0 : 0 0 | 0 0 | 512 395 7 9 76 8 0 0: 45 5 50 0 0 0: 21 7 71 0 0 0: 28 6 66 0 0 0| 021M|1256B 2006B: 200B0 : 0 0 | 0 0 |1261 1459 20 0 78 2 0 0: 7 8 84 1 0 0: 4 8 88 0 0 0: 66 4 29 0 0 1|4096B 6768k|
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 13:38, schrieb Andreas Kretschmer: nein, ausschalten. Ich lehne mich mal weit aus dem Fenster und kopiere einen Teile eines Artikels aus unserer KnowledgeBase: So, gemacht! Keine Änderung... :( ob das die Ursache für Deine Probleme ist ist aber fraglich. Wenn das reproduzierbar NUR mit Deinen stored procs passiert wird's das wohl nicht sein ... Es ist eigentlich reproduzierbar, in Sinne von "es passiert immer, wenn ich die Stored Procedure ausführe"... Ich habe mit dstat -f --bw einige Statistik geholt während des Laufes: 39 26 36 0 0 0: 89 4 7 0 0 0: 34 31 35 0 0 0: 26 22 48 3 0 0| 0 616k|3148B 3463B:4434B 3828B: 0 0 | 0 0 |2486 3715 91 5 4 0 0 0: 38 27 34 0 0 0: 31 36 32 0 0 0: 40 21 33 4 0 1| 0 876k| 52k 58k:4092B 3816B: 0 0 | 0 0 |3052 4337 43 15 40 2 0 0: 22 23 55 0 0 0: 41 14 44 0 0 1: 40 8 35 16 0 0| 013M| 59k 50k:4866B 4370B: 0 0 | 0 0 |3637 4798 20 1 79 0 0 0: 23 2 74 1 0 0: 0 0 100 0 0 0: 48 3 39 9 0 0| 015M| 13k 9382B: 260B0 : 0 0 | 0 0 | 627 578 0 0 100 0 0 0: 41 2 57 0 0 0: 0 0 100 0 0 0: 44 6 37 13 0 0| 021M| 202B 202B: 330B0 : 0 0 | 0 0 | 429 338 0 1 99 0 0 0: 56 4 38 2 0 0: 30 2 68 0 0 0: 2 0 87 11 0 0| 019M|1022B 402B: 260B0 : 0 0 | 0 0 | 713 533 2 1 97 0 0 0: 1 1 98 0 0 0: 90 4 5 1 0 0: 0 0 90 10 0 0| 021M|1078B 3150B: 190B 42B: 0 0 | 0 0 | 429 307 0 0 100 0 0 0: 6 3 90 1 0 0: 82 7 10 1 0 0: 0 0 90 10 0 0| 021M| 610B 502B: 570B 42B: 0 0 | 0 0 | 440 282 1 0 99 0 0 0: 0 0 100 0 0 0: 85 6 5 4 0 0: 2 1 88 9 0 0| 0 8692k| 14k 9638B: 330B0 : 0 0 | 0 0 | 605 655 1 0 99 0 0 0: 0 1 98 1 0 0: 88 7 4 1 0 0: 0 0 89 11 0 0| 021M|1190B 1835B: 130B0 : 0 0 | 0 0 | 479 390 1 1 98 0 0 0: 1 2 96 1 0 0: 88 6 5 1 0 0: 0 0 89 11 0 0| 022M| 502B 636B: 260B0 : 0 0 | 0 0 | 453 437 0 0 99 0 0 1: 1 1 97 1 0 0: 87 7 5 1 0 0: 2 1 86 11 0 0|4096B 22M|1078B 346B: 130B0 : 0 0 | 0 0 | 462 372 2 1 97 0 0 0: 8 4 87 1 0 0: 82 3 14 1 0 0: 1 0 87 12 0 0| 025M|3136B 2928B: 390B0 : 0 0 | 0 0 | 562 536 9 2 89 0 0 0: 6 6 88 0 0 0: 82 6 11 1 0 0: 5 6 78 11 0 0| 022M| 12k 9040B: 130B0 : 0 0 | 0 0 |1034 1292 14 2 84 0 0 0: 3 2 93 1 0 1: 72 8 19 1 0 0: 7 9 78 6 0 0| 015M| 956B 556B: 260B0 : 0 0 | 0 0 | 849 1000 30 2 68 0 0 0: 4 2 93 0 0 1: 28 2 70 0 0 0: 26 2 65 7 0 0| 017M| 538B 1848B:4254B 6354B: 0 0 | 0 0 | 722 579 89 5 5 1 0 0: 1 1 97 1 0 0: 2 1 96 0 0 1: 0 0 89 11 0 0| 020M| 956B 396B: 650B0 : 0 0 | 0 0 | 499 410 64 3 31 2 0 0: 0 0 99 1 0 0: 0 0 100 0 0 0: 28 2 63 7 0 0| 022M|1210B 3340B: 260B0 : 0 0 | 0 0 | 496 391 2 0 98 0 0 0: 1 1 97 1 0 0: 0 0 100 0 0 0: 88 5 3 4 0 0| 022M| 12k 7436B: 130B0 : 0 0 | 0 0 | 558 462 0 0 100 0 0 0: 1 2 94 3 0 0: 81 7 11 1 0 0: 18 1 79 2 0 0| 021M|2730B 2021B: 130B0 : 0 0 | 0 0 | 473 395 0 0 100 0 0 0: 0 0 89 11 0 0: 86 6 7 1 0 0: 6 1 92 0 0 1| 017M|1297B 1027B: 520B0 : 0 0 | 0 0 | 518 453 0 0 100 0 0 0: 2 1 91 6 0 0: 89 5 5 1 0 0: 0 0 100 0 0 0| 012M| 360B 1636B: 260B0 : 0 0 | 0 0 | 410 318 2 1 96 1 0 0: 2 4 83 11 0 0: 88 5 6 1 0 0: 0 0 98 2 0 0| 021M|1190B 1920B: 260B0 : 0 0 | 0 0 | 512 531 0 0 99 1 0 0: 4 4 80 12 0 0: 82 5 12 1 0 0: 1 1 98 0 0 0| 029M| 13k 7730B:4260B 6441B: 0 0 | 0 0 | 659 701 0 0 94 6 0 0: 2 3 95 0 0 0: 91 3 5 1 0 0: 0 3 97 0 0 0| 014M| 304B 1644B: 650B0 : 0 0 | 0 0 | 512 395 7 9 76 8 0 0: 45 5 50 0 0 0: 21 7 71 0 0 0: 28 6 66 0 0 0| 021M|1256B 2006B: 200B0 : 0 0 | 0 0 |1261 1459 20 0 78 2 0 0: 7 8 84 1 0 0:
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.20 um 11:44 schrieb Luca Bertoncello: Am 05.03.2020 11:37, schrieb Andreas Kretschmer: Hallo Andreas Du hast meinen Smily übersehen ;-) Vermutlich... zu viel Stress... * prüfe die Engine, vielleicht ist ja MyISAM im Einsatz Nein, alle Tabellen sind InnoDB... * THP ist ausgeschaltet? # cat /sys/kernel/mm/transparent_hugepage/enabled always [madvise] never Soll ich das einschalten? Welches Wert soll ich geben? nein, ausschalten. Ich lehne mich mal weit aus dem Fenster und kopiere einen Teile eines Artikels aus unserer KnowledgeBase: === Issue The system becomes totally unresponsive for a period of time. This may be caused by the operating system attempting to defragment huge memory pages. During this time the systems seems unresponsive and frozen, or the performance of the system (response times etc.) gets very erratic. *Transparent Huge Pages* (THP) are enabled by default in Red Hat Enterprise Linux and CentOS 6 and 7 for all applications. Resolution Disabling Transparent Huge Pages (THP) The controls for THP are found in the sysfs (|/sys|) tree under |/sys/kernel/mm/transparent_hugepage| or |/sys/kernel/mm/redhat_transparent_hugepage|, depending on the distribution and version. In the following we describe the first of these. The values for |/sys/kernel/mm/transparent_hugepage/enabled| can be one of the following: * |always| - defragment every time huge pages are requested * |madvise| - defragment every time huge pages are requested with |madvise| * |never| - never defragment huge pages To disable: |echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag # Depending on linux kernel version, you may need '0' instead of 'no' echo no > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag | Then, to prevent the changed values from being reset on server reboot you'll need to update the bootloader, typically grub: === der Artikel geht noch weiter, wer es lesen will kann ja Kunde werden ;-) ob das die Ursache für Deine Probleme ist ist aber fraglich. Wenn das reproduzierbar NUR mit Deinen stored procs passiert wird's das wohl nicht sein ... Andreas -- 2ndQuadrant - The PostgreSQL Support Company. www.2ndQuadrant.com
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 11:37, schrieb Andreas Kretschmer: Hallo Andreas Du hast meinen Smily übersehen ;-) Vermutlich... zu viel Stress... * prüfe die Engine, vielleicht ist ja MyISAM im Einsatz Nein, alle Tabellen sind InnoDB... * THP ist ausgeschaltet? # cat /sys/kernel/mm/transparent_hugepage/enabled always [madvise] never Soll ich das einschalten? Welches Wert soll ich geben? # uname -a Linux 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u4 (2019-07-19) x86_64 GNU/Linux 4 vCPUs so: vendor_id : GenuineIntel cpu family : 6 model : 44 model name : Westmere E56xx/L56xx/X56xx (Nehalem-C) stepping: 1 microcode : 0x1 cpu MHz : 2397.222 cache size : 4096 KB physical id : 3 siblings: 1 core id : 0 cpu cores : 1 apicid : 3 initial apicid : 3 fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx lm constant_tsc rep_good nopl pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor lahf_lm kaiser bugs: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds bogomips: 4794.44 clflush size: 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: Danke Luca Bertoncello (lucab...@lucabert.de)
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 04.03.20 um 15:57 schrieb Luca Bertoncello: Am 04.03.2020 15:50, schrieb Andreas Kretschmer: Am 04.03.20 um 15:14 schrieb Luca Bertoncello: Hat jemand eine Erklärung oder wenigstens eine Idee, was ich prüfen kann? ihr könntet eine Umstellung auf PostgreSQL prüfen ;-) Andreas, dieser Satz hilft überhaupt nicht... Es gibt mehrere Gründen aus dem wir hier MySQL nutzen. Eine Umstellung auf einer anderen Datenbank wäre für uns ein _RIESIGER_ Aufwand, ohne jegliche Garantie, dass das Problem gelöst wird. Du hast meinen Smily übersehen ;-) * prüfe die Engine, vielleicht ist ja MyISAM im Einsatz * THP ist ausgeschaltet? Andreas -- 2ndQuadrant - The PostgreSQL Support Company. www.2ndQuadrant.com
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 09:18, schrieb Markus Bergholz: das rename kannst du dir sparen, wenn du einfach eine view value_current anlegst, die dann auf die richtig value_current tabelle zeigt. unter oracle heißt das synonym. oder mysql/mariadb gibt es das leider nicht. aber einen ähnlichen workflow haben wir auch mit 27mio zeilen. Wir müssen aber auch dort schreiben, nicht nur lesen... das arbeiten mit der view ohne rename beschleunigt den gesamt prozess drastisch bei uns. das funktioniet allerdings dann nur für lesende prozesse. wenn ihr schreibende habt, müsstest du die zugrunde liegende tabelle dann dynamisch ermitteln und verwenden. Genau! Siehe oben... das mit dem gesperrten zugriff erschließt sich mir nicht. ich habe da auch leider keine andere idee und habe nach wie vor den remote storage in verdacht. Schade... Aber mit iotop habe ich auch nichts verdächtiges gesehen... Außerdem, dass ein NetApp nicht hinterher kommt ist schon schwer zu glauben... :) Danke Luca Bertoncello (lucab...@lucabert.de)
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
On Thu, Mar 5, 2020 at 9:06 AM Luca Bertoncello wrote: > Am 05.03.2020 08:51, schrieb Markus Bergholz: > > Hallo Markus > > > oh, das hört sich aber für eine db sehr inperformant an! > > Das habe ich auch gedacht... Allerdings ist es nicht immer so... > Heute früh habe ich wieder probiert: 1938981 Zeilen in 21 Sekunden... > Trotzdem konnten weitere SQL-Anfragen (INSERT) nicht sofort durchgeführt > werden. > > Zur Klärung: > 1) die SQL-Anfragen, die nicht sofort durchgeführt werden können, sind > INSERT in eine Tabelle (value_current), die vom Stored Procedure auch > bearbeitet wird > 2) die Stored Procedure _LIEST_ einige Daten aus der Tabelle > value_current und speichert sie in eine andere Tabelle > (value_aggregat1), dann _LIEST_ die restliche Daten aus value_current > und speichert sie in eine temporäre Tabelle (value_current_1), die > später per RENAME in value_current geändert wird (die frühere > value_current wird in value_current_old umbenannt). Schließlich wird die > value_current_old per DROP vernichtet. > das rename kannst du dir sparen, wenn du einfach eine view value_current anlegst, die dann auf die richtig value_current tabelle zeigt. unter oracle heißt das synonym. oder mysql/mariadb gibt es das leider nicht. aber einen ähnlichen workflow haben wir auch mit 27mio zeilen. das arbeiten mit der view ohne rename beschleunigt den gesamt prozess drastisch bei uns. das funktioniet allerdings dann nur für lesende prozesse. wenn ihr schreibende habt, müsstest du die zugrunde liegende tabelle dann dynamisch ermitteln und verwenden. > > > wenn das stored procedure 30k zeilen aktualisiert, ist das gesamte > > remote i/o geblockt. > > Ich könnte es mir vorstellen, dass eine kurze Sperrung während der > RENAME stattfindet, das ist aber nicht der Fall... Die Sperrung findet > tatsächlich während der Lesung aus value_current und Speicherung in > value_aggregat1 bzw. value_current_1. > Das ist für mich unerklärlich... > Und dass auch die Anfragen an _ANDEREN_ Datenbanken deswegen warten > müssen kann ich mir auch nicht erklären... > > > wie viel ram hat die kiste? innodb_pool_buffer_size? passt die db in > > den ram? > > Der Server hat 24GB RAM. > Die Einstellungen sind: > > innodb_buffer_pool_size = 16G > innodb_buffer_pool_instances= 4 > innodb_log_file_size= 1G > innodb_log_buffer_size = 16M > innodb_file_per_table = 1 > innodb_io_capacity = 2000 > innodb_read_io_threads = 128 > innodb_thread_concurrency = 0 > innodb_write_io_threads = 128 > innodb_use_native_aio = 0 > > Vorher war innodb_buffer_pool_size war nur 8GB. Nach der Verdoppelung > dauert die Stored Procedure deutlich weniger, aber die Zugriffe werden > weiterhin gesperrt... > das mit dem gesperrten zugriff erschließt sich mir nicht. ich habe da auch leider keine andere idee und habe nach wie vor den remote storage in verdacht. > > Ideen? > > Danke > Luca Bertoncello > (lucab...@lucabert.de) > >
Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft
Am 05.03.2020 08:51, schrieb Markus Bergholz: Hallo Markus oh, das hört sich aber für eine db sehr inperformant an! Das habe ich auch gedacht... Allerdings ist es nicht immer so... Heute früh habe ich wieder probiert: 1938981 Zeilen in 21 Sekunden... Trotzdem konnten weitere SQL-Anfragen (INSERT) nicht sofort durchgeführt werden. Zur Klärung: 1) die SQL-Anfragen, die nicht sofort durchgeführt werden können, sind INSERT in eine Tabelle (value_current), die vom Stored Procedure auch bearbeitet wird 2) die Stored Procedure _LIEST_ einige Daten aus der Tabelle value_current und speichert sie in eine andere Tabelle (value_aggregat1), dann _LIEST_ die restliche Daten aus value_current und speichert sie in eine temporäre Tabelle (value_current_1), die später per RENAME in value_current geändert wird (die frühere value_current wird in value_current_old umbenannt). Schließlich wird die value_current_old per DROP vernichtet. wenn das stored procedure 30k zeilen aktualisiert, ist das gesamte remote i/o geblockt. Ich könnte es mir vorstellen, dass eine kurze Sperrung während der RENAME stattfindet, das ist aber nicht der Fall... Die Sperrung findet tatsächlich während der Lesung aus value_current und Speicherung in value_aggregat1 bzw. value_current_1. Das ist für mich unerklärlich... Und dass auch die Anfragen an _ANDEREN_ Datenbanken deswegen warten müssen kann ich mir auch nicht erklären... wie viel ram hat die kiste? innodb_pool_buffer_size? passt die db in den ram? Der Server hat 24GB RAM. Die Einstellungen sind: innodb_buffer_pool_size = 16G innodb_buffer_pool_instances= 4 innodb_log_file_size= 1G innodb_log_buffer_size = 16M innodb_file_per_table = 1 innodb_io_capacity = 2000 innodb_read_io_threads = 128 innodb_thread_concurrency = 0 innodb_write_io_threads = 128 innodb_use_native_aio = 0 Vorher war innodb_buffer_pool_size war nur 8GB. Nach der Verdoppelung dauert die Stored Procedure deutlich weniger, aber die Zugriffe werden weiterhin gesperrt... Ideen? Danke Luca Bertoncello (lucab...@lucabert.de)