Meine eigene Speicher-Engine stürzt wegen eines zu kleinen sort_buffers ab

9

Ich arbeite an meiner eigenen Speicher-Engine für MySQL. Bisher funktioniert diese Speicher-Engine zuverlässig und korrekt - aber nur für kleine (~ 100 MB) Tabellen ... Bei großen Tabellen erhalte ich einen Segmentierungsfehler, wenn ich versuche, eine Abfrage mit einer Reihenfolge auszuführen, so dass etwas zu einem segfault führt:

%Vor%

Also habe ich MySQL im Debug-Modus kompiliert und festgestellt, dass es in der Funktion merge_buffers in filesort.cc jetzt einen Assertionsfehler gibt:

%Vor%

Ehrlich gesagt habe ich keine Ahnung, was ich in meiner Speicher-Engine ändern kann, damit dieser Fehler verschwindet. Es sah zunächst so aus, als müsste ich den Konfigurationsparameter sort_buffer_size ändern - aber selbst wenn dieses Ding höher als die Größe der Tabelle gesetzt wird, ändert sich nichts mit diesem Fehler.

Hat jemand, der MySQL-Speicher-Engines zu schreiben weiß, wie man das löst?

    
Markus Pilman 12.12.2011, 14:17
quelle

1 Antwort

4

Es gibt ein ähnliches Problem , das mit der Falcon-Speicher-Engine gemeldet wurde. Der Kommentar im Fehler war,

  

Es scheint, dass das Problem in filesort auftritt, wenn Sie eine Zeile haben   Schätzungen, die ernsthaft falsch sind.

Wahrscheinlich gibt es irgendwo einen Fehler in Ihrer Speicher-Engine, aber das ist schwer zu debuggen durch Stapelüberlauf.

    
sbridges 31.12.2011, 02:35
quelle

Tags und Links