Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-05 Diskussionsfäden Luca Bertoncello
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

2020-03-05 Diskussionsfäden Andreas Kretschmer




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

2020-03-05 Diskussionsfäden Luca Bertoncello

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

2020-03-05 Diskussionsfäden 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!

Danke
Luca Bertoncello
(lucab...@lucabert.de)



Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-05 Diskussionsfäden Falk Herzog
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

2020-03-05 Diskussionsfäden Luca Bertoncello

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

2020-03-05 Diskussionsfäden Falk Herzog
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

2020-03-05 Diskussionsfäden Luca Bertoncello

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

2020-03-05 Diskussionsfäden Luca Bertoncello

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

2020-03-05 Diskussionsfäden Andreas Kretschmer




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

2020-03-05 Diskussionsfäden 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?

# 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

2020-03-05 Diskussionsfäden Andreas Kretschmer




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

2020-03-05 Diskussionsfäden Luca Bertoncello

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

2020-03-05 Diskussionsfäden Markus Bergholz
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

2020-03-05 Diskussionsfäden Luca Bertoncello

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)



Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-04 Diskussionsfäden Markus Bergholz
On Wed, Mar 4, 2020 at 9:15 PM Luca Bertoncello 
wrote:

> Am 04.03.2020 um 21:10 schrieb ro...@seffner.de:
> >> Nein! 0.5-1, mit 4 CPUs...
> >
> > Die Last kann doch auch auf dem Storage sein.
>
> Es sah nicht wirklich so aus, dass die Kiste viel gemacht hat...
> Ich muss aber zugeben, dass ich auch keine Last auf der Festplatte
> gemessen habe...
> Man muss aber auch sagen, dass der Server eine VM ist, und die
> Festplatte eine Image-Datei auf der NetApp ist, also es erscheint mir
> schwer zu glauben, dass gerade das das Problem sein kann...
>

oh, das hört sich aber für eine db sehr inperformant an!
wenn das stored procedure 30k zeilen aktualisiert, ist das gesamte remote
i/o geblockt.
wie viel ram hat die kiste? innodb_pool_buffer_size? passt die db in den
ram?



>
> Danke
> Luca Bertoncello
> (lucab...@lucabert.de)
>
>


Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-04 Diskussionsfäden Luca Bertoncello
Am 04.03.2020 um 21:10 schrieb ro...@seffner.de:
>> Nein! 0.5-1, mit 4 CPUs... 
> 
> Die Last kann doch auch auf dem Storage sein.

Es sah nicht wirklich so aus, dass die Kiste viel gemacht hat...
Ich muss aber zugeben, dass ich auch keine Last auf der Festplatte
gemessen habe...
Man muss aber auch sagen, dass der Server eine VM ist, und die
Festplatte eine Image-Datei auf der NetApp ist, also es erscheint mir
schwer zu glauben, dass gerade das das Problem sein kann...

Danke
Luca Bertoncello
(lucab...@lucabert.de)



Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-04 Diskussionsfäden ronny
> Nein! 0.5-1, mit 4 CPUs... Die Last kann doch auch auf dem Storage sein.

Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-04 Diskussionsfäden Luca Bertoncello
Am 04.03.2020 um 19:42 schrieb Markus Bergholz:

Hallo Markus

> table locking ist in stored procedure gar nicht erlaubt bei mariadb. so
> ein verhalten kenne ich nicht.

Ich mache es auch nicht, zumindest nicht explizit/gewollt...

> ist die server last dabei einfach so hoch dass der server einfach nicht
> reagiert?

Nein! 0.5-1, mit 4 CPUs...

> kannst du von remote dann nicht mehr auf die db zugreifen oder auch
> nicht von localhost?

Ich kann mich anmelden und die Prozesse der DB sehen, aber eine Anfrage
dauert ewig...

Ideen?

Danke
Luca Bertoncello
(lucab...@lucabert.de)



Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-04 Diskussionsfäden Markus Bergholz
On Wed, Mar 4, 2020 at 3:15 PM Luca Bertoncello 
wrote:

> Hallo Leute!
>
> Wir haben im Büro einen Server mit MariaDB 10.1.38 von Debian Repository
> (Stretch).
> In der Instanz sind 5 Datenbanken, eine davon etwas groß (~25GB), die
> andere sehr klein.
>
> In der "großen" Datenbank haben wir ein paar Stored Procedures, die
> innerhalb einer Transaktion Daten von einer Tabelle in eine andere
> verschiebt (eine Art Aggregationsverfahren).
> Die Prozedur in sich funktioniert einwandfrei, allerdings wenn diese
> läuft werden andere Anfragen (auch in anderen Datenbanken!!!) gesperrt,
> also ich sehe sie in der Prozessliste aber sie tun nichts eine ganze
> Zeit lang.
> Die Prozedur selbst läuft mal einige Sekunden und mal mehreren Minuten,
> obwohl die Daten zu aggregieren sind mehr oder wenige die selben
> (~30.000 Sätzen).
>
> Hat jemand eine Erklärung oder wenigstens eine Idee, was ich prüfen
> kann?
>

table locking ist in stored procedure gar nicht erlaubt bei mariadb. so ein
verhalten kenne ich nicht.
ist die server last dabei einfach so hoch dass der server einfach nicht
reagiert?
kannst du von remote dann nicht mehr auf die db zugreifen oder auch nicht
von localhost?


>
> Danke
> Luca Bertoncello
> (lucab...@lucabert.de)
>
>


Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-04 Diskussionsfäden 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.


Grüße
Luca Bertoncello
(lucab...@lucabert.de)



Re: Problem mit MariaDB - Zugriffe werden blockiert während Stored Procedure läuft

2020-03-04 Diskussionsfäden 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

--
2ndQuadrant - The PostgreSQL Support Company.
www.2ndQuadrant.com