MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Locked
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Daniel Obee »

*************
1.1.0 beta now available at http://forums.otrs.org/viewtopic.php?f=64&t=8062#p31906 (english description)
1.0.2 at the end of this thread
*************

Hi alle,

auf Basis des für die 3.0 entwickelten Patches für die Lowering - Problematik bei der Kundensuche hab ich einen Patch gebaut.
zu
Das Prinzip ist recht hemdsärmelig: in der Kernel/System/CustomerUser/DB.pm wird bei (fast, s.u.) allen Abfragen der Customer_ID das "LOWER" rausgenommen, wenn in der Config.pm das Parameter 'CaseSensitivity => 1' gesetzt ist:

Code: Select all

Params => {
            Table => 'customer_user',
            CaseSensitive => 1,
        },
Im Ergebnis sollten bei customer_user Tabellen, die groß und ohnehin schon ge'LOWER't sind, recht deutliche Performance Sprünge bei der Kundensuche drin sein, da nun vorhandene Indexe mitbenutzt werden.

Bei uns ist das Modul seit heute im Live-Test und bringt auch Ergebnisse. Trotzdem deklariere ich vorsichtshalber 'beta'.

Feedback wäre natürlich klasse.

Gruß
Daniel
Last edited by Daniel Obee on 07 Dec 2010, 21:45, edited 3 times in total.
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Re: MySQL Booster für 2.4.x (beta)

Post by Andre Bauer »

Habs gerade ausprobieren wollen.

Warum wird "FAQ 1.6.0" benötigt?

Sicher nur ein Copy & Paste Fehler, oder?

Hab mal

Code: Select all

 <PackageRequired Version="1.6.0">FAQ</PackageRequired>
aus dem XML entfernt. Dann geht die Installation...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Re: MySQL Booster für 2.4.x (beta)

Post by Andre Bauer »

Hmmm... In meinem MySQL Slow Log tauchen immer noch LOWER Einträge auf. Z.B.:
SELECT DISTINCT st.id, st.tn, st.create_time_unix FROM ticket st, queue sq WHERE sq.id = st.queue_id AND sq.group_id IN (5, 7, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 33, 34, 41, 48, 52, 53, 57) AND ( LOWER(st.customer_id) = LOWER('12345678') OR LOWER(st.customer_id) = LOWER('12345678')) ORDER BY st.create_time_unix DESC LIMIT 250;
Passiert, wenn man "index.pl?AgentTicketCustomer&TicketID=1" aufruft, also auf die Kundennummer klickt...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

Die FAQ Geschichte war tatsächlich ein c/p Fehler. Hab das Modul noch mal ohne hochgeladen.

Wo die Abfrage getriggert wird, muss ich noch suchen. Ich befürchte aber, dass die in einem anderen Modul steckt - was im Übrigen dann auch bei der 3.0 Version der Fall wäre. Ich meld mich, sobald ich was finde.

Gruß
Daniel
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Re: MySQL Booster für 2.4.x (beta)

Post by Andre Bauer »

Ich geb die Info auch mal im Bugreport weiter...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

In der Ticket.pm steckt der Wurm. Dort ist ja die TicketSearch verankert. Komme jetzt leider nicht dazu, in's Detail zu gehen, aber hier steckt wahrscheinlich die echte Performancesteigerung.

Gruß
Daniel
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Re: MySQL Booster für 2.4.x (beta)

Post by Andre Bauer »

Es gibt nun nen neuen Bugreport dazu:

http://bugs.otrs.org/show_bug.cgi?id=6063
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

Hab auch noch mal meinen Senf dazu gegeben. Die Lösung ist ja jetzt keine Raketentechnik.

Das in der vorgeschlagenen Form umzusetzen ist allerdings ein Aufwand, für den ich im Moment keine Zeit finden werde...
Dizzy
Znuny expert
Posts: 200
Joined: 12 Apr 2007, 14:30

Re: MySQL Booster für 2.4.x (beta)

Post by Dizzy »

Ich habe das Modul bei uns im Testsystem installiert, klappt soweit super :-)
Laut MySQL Log werden keine "customer_user" Abfragen mehr gesendet, welche keinen Index nutzen bzw. den vorhandenen Index umgehen.

Wenn ich "rcotrs" durchführe erhalte ich eine Meldung:
Checking database connect... (Useless use of a constant in void context at /opt/otrs/Kernel/Config.pm line 86.
Useless use of anonymous hash ({}) in void context at /opt/otrs/Kernel/Config.pm line 86.

(dort habe ich die "Param-Zeile" eingefügt)

Vermutlich ist dies nicht weiter schlimm, oder?

Des weiteren ist mir aufgefallen, dass der "MySQL Booster" nur funktioniert, wenn die CiCS-Pakete der Fa. c.a.p.e. IT GmbH nicht installiert sind :)
In deren /opt/otrs/CiCS/Kernel/System/CustomerUser - Pfad gibt es auch eine DB.pm, welche wohl vorrangig benutzt wird 8)

Aber das lässt sich wohl nicht automatisiert ändern hehe.
Und nochmals, danke für das MySQL Booster- Modul!
OTRS: 2.4.9 + ITSM 2.1.1 + CiCS 3.3.5
SLES 11
MySQL-Version: 5.1.49
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

Dizzy wrote:Wenn ich "rcotrs" durchführe erhalte ich eine Meldung:
Checking database connect... (Useless use of a constant in void context at /opt/otrs/Kernel/Config.pm line 86.
Useless use of anonymous hash ({}) in void context at /opt/otrs/Kernel/Config.pm line 86.

(dort habe ich die "Param-Zeile" eingefügt)
Die Meldung ist nur eine 'Warnung' vor unnützer Verwendung von Variablen. Warum die Meldung gemacht wird (die Variablen werden definitiv benötigt) ist mir nicht ganz klar - wirklichen Schaden richten die aber ohnehin nicht an.

Die Pakete der Cape-IT kenne ich nur vom Hörensagen bzw. kurz drüber-schauen. Die Modifikationen sollten aber auch dort funktionieren, wenn man sie entsprechend in die DB.pm einbaut. Ich hab die geänderten Zeilen im Code markiert, ist nicht wirklich viel.

Gruß
Daniel
maba
Znuny newbie
Posts: 20
Joined: 06 Nov 2009, 21:15
Znuny Version: 2.4.9
Contact:

Re: MySQL Booster für 2.4.x (beta)

Post by maba »

Wie Daniel schon richtig vermutet, müssen seine Änderungen nur in unsere DB.pm übernommen werden, anschließend funktioniert dies auch mit unserem Paket.

@Daniel:
Wie ausführlich hast du die Änderungen schon durchtesten können? Hast du eine "Statistik" zur effektiven Performance-Steigerung?
Eventuell nehmen wir dies direkt mit unsere Erweiterungen auf.

Viele Grüße
Martin
--
OTRS 3.0.x || OTRS::CiCS 3.5.x for OTRS 2.4.x
Professional OTRS-integration, development and consulting by c.a.p.e. IT - http://www.cape-it.de
Questions and hints regarding OTRS::CiCS are also accepted by mail to support@cape-it.de
Bei Fragen und Hinweisen zu OTRS::CiCS-Erweiterungen gern auch per Mail an support@cape-it.de
maba
Znuny newbie
Posts: 20
Joined: 06 Nov 2009, 21:15
Znuny Version: 2.4.9
Contact:

Re: MySQL Booster für 2.4.x (beta)

Post by maba »

Hallo Daniel,

kann es sein, dass du in Zeile 260 das "*"-Replacing vergessen hast?
Ansonsten eine gute Idee und eine schöne Lösung über das CustomerUser-Mapping zu gehen!

Viele Grüße
Martin
--
OTRS 3.0.x || OTRS::CiCS 3.5.x for OTRS 2.4.x
Professional OTRS-integration, development and consulting by c.a.p.e. IT - http://www.cape-it.de
Questions and hints regarding OTRS::CiCS are also accepted by mail to support@cape-it.de
Bei Fragen und Hinweisen zu OTRS::CiCS-Erweiterungen gern auch per Mail an support@cape-it.de
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

Hi alle,

inzwischen hab ich mich noch mal weit tiefer mit der Problematik beschäftigt. In der LOWER-Geschichte steckt eine Menge drin - auch ne Menge Murks. Das aktuelle Modul bringt nicht wirklich viel, daher kommt hier wahrscheinlich bald ein neues.

Aber erst mal soweit, wie ich bin.

Ich teste gerade ein neues CustomerUser/DB.pm. Idee ist, in der CustomerUserMap (Externes Backend in der config.pm) das Parameter storage-type (var/int) um 'low' und 'cas' zu erweiteren. 'var' wird ohnehin nicht verwendet. 'low' könnte anzeigen, dass es sich um ein ge'lower'tes Feld handelt, 'cas' zeigt Case Sensitivity an. Funktioniert schon ganz gut, hilft aber nicht immer. Weil:

1.) Die Kundensuche (bei externem Backend)
Die Suche nach Details zum User geht über die System/CustomerUser/DB.pm Die hatte ich ja schon mal angefasst. Hier lassen sich folgende Subactions verbessern:
- CustomerName: Wird in Listen verwendet, um Vorname und Nachname des Users anzuzeigen. Konnte ich verbessern, bringt bestimmt einiges bei Listen-Anzeigen.
- CustomerSearch: Wird mit verschiedenen Parametern ausgeführt:
a) Search ist die Kundensuche in der Suchmaske. Hier wird die System/DB.pm bemüht, um die Query Conditions nutzen zu können (Boolsche Ausdrücke, Platzhalter). Schwer, die anzupacken. Muss ich mir noch was überlegen.
b) PostMasterSearch ist ebendies und lowered nur bei Maileingang, Potential daher nicht so prickelnd (und von OTRS komplett ignoriert, von mir auch).
c) UserLogin wird wohl im Customer Frontend benutzt, konnte aber wie CustomerName optimiert werden.
- CustomerUserDataGet wird ab und zu ausgeführt - ich hab nur keine Ahnung wann genau. Immer, wenn ich versuche, es zu rekonstruieren, wird der Parameter nicht benutzt. Optimierung hat aber funktioniert.

1.) Die Ticketsuche zum Kunden
Die läuft über die Ticket.pm. Problem hier: die im Ticket abgespeicherten 'customer_id' und 'customer_user_id' sind nicht immer gelowert - auch wenn eine externe Kundendatenbank so ausgelegt wäre. Grund ist, dass hier im Zweifelsfalle die E-Mailadresse von unbekannten Kunden (oder Spammern) steht, weil der PostMaster die beim Schreiben nicht lowert. Müssten wir also auch im Ticket Create / Update rumpfuschen, damit hier _immer_ ein gelowerter Wert steht. Und bei bestehenden Systemen die DB entsprechend bereinigen.
Hier wird m. E. das meiste Potential verschenkt. Vielleicht habt ihr ja nen Tipp?

Soweit erstmal. Die neue Kernel/System/CustomerUser/DB.pm hänge ich für besonders Wagemutige mal an. Ich hab das Logging mal dringelassen, dann kann man im Admin System Log nachvollziehen, was passiert.

Gruß
Daniel
Last edited by Daniel Obee on 03 Dec 2010, 15:22, edited 1 time in total.
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

Okay, neuer Zwischenstand.

Die CustomerUser/DB.pm und die DB.pm habe ich nun erst mal soweit, wie ich sie wollte. Anbei ein Paket mit den beiden Dateien zum Installieren. Ich weise vorsichtshalber noch einmal ausdrücklich darauf hin, dass es sich hier um einen Versuch handelt, Installation erfolgt auf eigene Gefahr! Im Code sind noch Logs mit eingebaut, so könnt ihr zumindest teilweise sehen, wann welche Form der Abfrage benutzt wird.

Die CustomerUse/DB.pm reagiert nun wie oben schon beschrieben auf die Angaben var/cas/low/int im CustomerUserMapping. Zusätzlich habe ich noch eine Config-Option (Admin->SysConfig->MySQLBooster) eingebaut, die die manuelle Suche nach dem Kunden in der Kernel/System/DB.pm steuert. So kann man bei bereits gelowerten Feldern die Suche verbessern.

Was bringt es bisher? Konnte noch nicht wirklich viel testen, aber zumindest in der StatusView und bei der Kundensuche ohne Lowering konnte gefühlt eine deutliche Beschleunigung erreicht werden. Bitte, bitte, bitte: Testet doch mal mit euren Möglichkeiten - ich bin kein SysOP und daher stehen mir nicht wirklich viele Tools (und fast kein KnowHow) zur Verfügung. Würde mich echt freuen.

Was bringt es (noch) nicht? Ich habe es noch nicht geschafft den entscheidenden Code in der Ticket.pm zu verbessern. D.h. eine entscheidende Suche (Ticket zum Kunden) ist immer noch a....langsam. Hier liegt enormes Potential - allerdings auch der Hase im Pfeffer. Kleiner Schwank am Rande: selbst die Suche nach der Ticketnummer (!) wird gelowert... Ich hab grundsätzlich schon eine Idee, wie ich das angehen wollen würde - allein es ist nicht ganz trivial.

Gruß & einen tollen Wochenstart

Daniel
You do not have the required permissions to view the files attached to this post.
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

Disclaimer: Auch wenn ich ziemlich gründlich getestet habe und überzeugt bin, dass alles klappt - ein Restrisiko ist keinesfalls ausgeschlossen und ich übernehme keine wie auch immer geartete Verantwortung für irgendwelche Nebeneffekte bei Installation des hier angebotenen Moduls!
Das Modul berücksichtigt in dieser Version nur ein CustomerBackend. Bei mehreren Customer Backends müssten zumindest die Feldtypen übereinstimmen.


So. Ein neuer Wurf. Die Ticket.pm ist nun auch integriert, die Geschwindigkeitssteigerung insgesamt wirklich beeindruckend. Probiert einfach selbst aus.

Folgende Einstellungen müssen in der Config.pm vorgenommen werden (innerhalb der Definition der Kundendatenbank, also irgendwo innnerhalb von $Self->{CustomerUser} = { ... } )

Code: Select all

        # SearchKeyType used in Ticket.pm ticket search and CustomerUser/DB.pm Searches
        SearchKeyType => {
            CustomerID => 'int',            # UserCustomerID in Map
            CustomerUserLogin => 'low',     # UserLogin in Map
            SearchForcedType => 'low'       # Forces SearchType in manual CustomerSearch (e.g. Callticket or Emailticket)
                                            # please make sure all CustomerUserSearchFields match the criteria!
        },
Die Einstellungen betreffen zum einen die beiden zentralen Suchmerkmale (CustomerID und CustomerUserLogin) und legen deren Qualität fest (var, int, low, cas) und zum anderen wird ein Suchtyp für die manuelle Suche nach dem CustomerUser festgelegt (z.B. in der Suche im Ticket etc.). Die Config-Option der 0.0.2 hab ich wieder ausgebaut. Also bitte die 0.1.0 nicht einfach drüberinstallieren, sondern die 0.0.1 vorher deinstallieren.

Was var/int/low/cas bedeutet:
* 'var' ist die Grundeinstellung und heißt: Suchbegriff und DB Inhalt werden gelowert - hoff bloß nicht, dass das schnell geht
* 'int' wäre die optimale Variante, wenn OTRS damit umgehen könnte* weder SearchTerm noch DB Inhalt werden gelowert
* 'low' ist perfekt, wenn der DB Inhalt bereits gelowert vorliegt. Der SearchTerm wird sicherheitshalber noch gelowert - der Index benutzt.
* 'cas' nutzt auch den Index, allerdings wird vorrausgesetzt, dass der SearchTerm mit korrekter Groß-/Kleinschreibung aufwartet, da nichts gelowert wird.

Was im Einzelnen passiert:
Die Ticket.pm wurde so modifiziert, dass die entscheidenden Merkmale jetzt separat abgetestet werden. Die Stelle verbirgt sich hinter # other ticket stuff, ca. Zeile 4150:
- Ticketnummern werden nie gelowert, Ticket-Titel dagegen immer
- Für CustomerID und CustomerUserIDs wird der SearchKeyType aus der Config.pm ermittelt und die richtigen LOWER Parameter für den SearchTerm und die DB gesetzt
- CustomerIDs/CustomerUserIDs ,die ein @ enthalten werden immer gelowert (nicht zugeordnete Tickets)

Die CustomerUser/DB.pm arbeitet von Hause aus mit dem CustomerKey als Suchkriterium. Hier ist zumindest die Möglichkeit vorgesehen, dass der abgelegte Wert (das UserLogin) integer sein kann - was er selten sein dürfte**. Ich habe die Möglichkeiten um 'cas' und 'low' erweitert - definiert über den SearchKeyType in der Config.pm.

Der SearchForcedType legt global fest, wie die manuelle Suche über die definierten CustomerSearchFields ausgeführt wird. Hier bin ich noch nicht ganz zufrieden, da u. U. unterschiedliche Feldtypen über einen Kamm geschoren werden. Bei unserem Setup funktioniert 'low' perfekt, da wir nach userLogin, email und userID suchen, die allesamt low in der Datenbank liegen. Zukünftige (bzw. Standard-geeignete) Varianten sollten hier noch differenzieren. Das könnte über die Deklaration in der Map geschehen.

Insgesamt bin ich mit dem bisherigen Ergebnis recht zufrieden. Ich denke, man könnte die Konfiguration noch 'automatisieren', indem man die Map sauber einliest und die Variante über den ForcedType kann man auch eleganter lösen. Vielleicht komm ich ja mal irgendwann dazu.

Lasst es Feedback regnen! Ich hab bereits ca. 4-5 Tage meiner Lebens- und Arbeitszeit in das Projekt gesetzt. Wäre also klasse, wenn ihr die 4-5 Minuten hättet, Anregungen bzw. Kritik und/oder eure Erfahrungen unterzubringen.

Gruß
Daniel

* Tatsächlich ist 'low' immer schneller, da bei INT die Anführungszeichen um den DB Teil weggelassen werden. Da die customer_id/customer_user_id jedoch VARCHAR deklariert sind, wird dann der Index nicht benutzt
** OTRS setzt vorraus, dass CustomerKey mit dem UserLogin übereinstimmt (was eine gewagte These ist...) und checkt ob das UserLogin integer ist. Wäre interessant, mal auszuprobieren, den CustomerKey auf einen nicht-Integer Wert zu setzen und das UserLogin Integer - dann funktioniert wahrscheinlich nix mehr so richtig... ein klarer Bug, der allerdings selten auftreten wird.
Last edited by Daniel Obee on 07 Dec 2010, 22:06, edited 1 time in total.
Dizzy
Znuny expert
Posts: 200
Joined: 12 Apr 2007, 14:30

Re: MySQL Booster für 2.4.x (beta)

Post by Dizzy »

Moin!
Also erstmal ein großes Lob und Danke von mir, dass du soviel Zeit und Arbeit in die "Lower-Problematik" steckst!

Ich würde gern das Modul testen (habe Version 0.1.0 auch schon im Testsystem installiert), wie du weisst nutzen wir aber das CiCS Modul :)
Dort gibt es auch eine "Kernel/System/Ticket.pm" und "Kernel/System/CustomerUser/DB.pm"-Datei, welche vorrangig benutzt wird.
"Kernel/System/DB.pm" gibt es nicht im CiCS-Ordner, diese sollte also vom OTRS-Ordner / deinem Modul direkt kommen.

Ich habe die beiden Dateien mal vom aktuellen CiCS Release 3.3.7 an meinen Post angehangen.

Speziell die Ticket.pm ist ja recht groß und umfangreich, kannst du mir helfen deine Änderungen dort umzusetzen?
Oder sind bei deinen Dateien wirklich alle Änderungen kommentiert?

Da ich bis auf ein wenig "Copy, Paste & Edit" Fähigkeiten kaum Kenntnisse in dem Bereich habe bin ich auf die Kommentare angewiesen :D
Ich habe ansonsten kaum Ahnung von dem was ich da eigentlich ändere :lol:


Gruß
Daniel
You do not have the required permissions to view the files attached to this post.
OTRS: 2.4.9 + ITSM 2.1.1 + CiCS 3.3.5
SLES 11
MySQL-Version: 5.1.49
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x (beta)

Post by Daniel Obee »

Für die Ticket.pm ist das relativ einfach, hier müsstest Du nur den kompletten Teil unter <# other ticket stuff> austauschen (Zeile 4319 bis 4386 im Cape-IT Modul, 4152 bis 4252 in meinem).

Die Verbesserung der Ticket.pm bringt am meisten und funktioniert unabhängig von den anderen beiden. Die würde ich an deiner Stelle als erstes mal ausprobieren.

Die DB.pm nutzt nix ohne die CustomerUser/DB.pm - schadet aber auch nix. In der CustomerUser/DB.pm sind die Änderungen bisschen komplexer. Zunächst müsstest Du Zeile 79-84 aus meinem Modul rüberziehen und dann in den Subroutinen CustomerName, CustomerSearch und CustomerUserDataGet den Part unter # check CustomerKey type austauschen.

Mein Modul ist noch beta - ohne richtige Kommentierung und ein paar überflüssige Zeilen sind auch noch drin. Ich hab's gestern noch aufs Live-System gepackt - wenn es dort noch ne Woche sauber gelaufen ist, dann mach ich mich ans Putzen und Auskommentieren. Versprochen.

Gruß
Daniel
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x V1.0

Post by Daniel Obee »

Nach intensivem Testen und zehn Tagen im Live-Einsatz im Call Center erkläre ich das Modul hiermit für einsatzreif.

Die Abfragen Kunde zum Ticket und Tickets zum Kunden werden bis zu 90% schneller ausgeführt, die Kundensuche je nach Suchkriterium immer noch ca. 50% schneller.

Ich habe versucht, das Modul maximal kompatibel zu halten. Ursprüngliche OTRS-Funktionalität wird bis auf wenige, sinnvolle Ausnahmen (keine lowering bei Suche nach Ticketnummern) nicht verändert, wenn dies nicht ausdrücklich in der Config.pm so definiert wird.

Im Post weiter oben werden Funktionsweise und Beschränkungen beleuchtet: http://forums.otrs.org/viewtopic.php?f= ... 409#p27409 Ich werde aber demnächst auch noch eine umfangreichere Doku basteln, falls die Resonanz das rechtfertigt.

Änderungen gegenüber der 0.1.0 sind ausschließlich kosmetischer Natur: Die neuen/geänderten Teile der Module sind jetzt sauber markiert und überflüssige Logging Events sind entfernt.

Gruß
Daniel
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: MySQL Booster für 2.4.x V1.0

Post by Wolfgangf »

... na dann probier mas mal im Testsystem :) Danke Dir!
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x V1.0.1 (Bitte Updaten!)

Post by Daniel Obee »

Habe noch einen SQL Fehler entdeckt, der in bestimmten Konstellationen zu einem Fehler ('FUNCTION otrs.LOWER does not exist') führt.

Der Fehler ist in der aktuellen Version gefixt.
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Daniel Obee »

Update V 1.0.2 bringt eine weitere Verbesserung v.a. der Statusview-Performance. Der Ticket COUNT wird nun ohne LIMIT ausgeführt, was die Sache um ca. Faktor 4 schneller macht.

Gruß
Daniel
You do not have the required permissions to view the files attached to this post.
Silicium
Znuny newbie
Posts: 3
Joined: 06 Feb 2011, 04:35
Znuny Version: 2.4

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Silicium »

Irgendwie bringt der Patch bei uns leider nicht den gewuenschten Erfolg.

da wir eine relativ grosse DB haben hat das Problem auch einen echt harten Impact.
Wenn ein User sich einloggt, wird erstmal

SELECT profile_name FROM search_profile WHERE LOWER(login) = LOWER('TicketSearch::foobar');

ausgefuehrt, was schon relativ lange dauert.
beim klick auf "suche" ebenfalls.

Das danze lastet einen MySQL Thread fuer rund 2 sekunden 100% aus.
sprich wenn jetzt ein ungeduldiger user 10x auf den suchbutton klickt und bei vielen customercare Menschen
das die haelfte macht, stehn die DB server still.

Die Suche ansich ist schnell, nur das oeffnen der Suchmaske nicht

ich bin mir jetzt icht sicher ob dein Patch nur fuer das Customer Frontend ist oder warum das bei mir nicht tut, aber vielleicht hat ja jemand eine Idee

lg Silicium
Last edited by Silicium on 07 Feb 2011, 02:27, edited 2 times in total.
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Daniel Obee »

Wäre klasse, wenn Du die Signatur noch ausfüllen würdest, aber ich schätze mal, Du fährst auch die 2.4.x.

Das Öffnen der Suchmaske hatte ich so noch nicht konkret auf den Schirm. Hier schien mir vor allem das Problem, dass die möglichen Freifeldbelegungen durch jeweils einen SELECT DISTINCT über alle Daten zusammengefuscht werden.

Das Ding mit der search_profile ist auf jeden Fall eine Untersuchung wert. Ist wieder ein ganz anderes Modul, aber ich schau's mir mal an, wenn ich Zeit habe.

Gruß
Daniel
Silicium
Znuny newbie
Posts: 3
Joined: 06 Feb 2011, 04:35
Znuny Version: 2.4

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Silicium »

Nach 5 minuten rumgreppen hab ich das Problem auch schon gefunden und gfixt.
Ist gluecklicherweise sehr simpel.

http://www.gegen-computer.de/patches/ot ... rofile.pm/


Gruesse
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Andre Bauer »

Please continue this thread in english.

Info: Info: http://forums.otrs.org/viewtopic.php?f=2&p=28356#p28356

Thanks...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Daniel Obee »

monotek wrote:Please continue this thread in english.

Info: Info: http://forums.otrs.org/viewtopic.php?f=2&p=28356#p28356

Thanks...
I'll open up a new thread in English as soon as I can. Sorry.

Dan
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Andre Bauer »

No problem, i thougt its to much german text to force translation too ;-)

Maybe a google translation of the doku in a new thread would also fit our needs...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Silicium
Znuny newbie
Posts: 3
Joined: 06 Feb 2011, 04:35
Znuny Version: 2.4

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Silicium »

i just removed all LOWER() function in the whole system and we now testing it under heavy load.

i will comment the results in a week.



modified files:


./Kernel/System/CustomerCompany.pm
./Kernel/System/SearchProfile.pm
./Kernel/System/User.pm
./Kernel/System/CustomerUser/Preferences/DB.pm
./Kernel/System/CustomerUser/DB.pm
./Kernel/System/Ticket.pm
./Kernel/System/DB.pm
./Kernel/System/User/Preferences/DB.pm
./Kernel/System/Ticket/ArticleSearchIndex/StaticDB.pm
./Kernel/System/Ticket/ArticleSearchIndex/RuntimeDB.pm
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Daniel Obee »

Just removing all "LOWER"s won't bring you very far. There's a good share of occasions where you really need to lower, such as searching for ticket titles. You might find a way that works for your system though.

The thread above is about my search for a universal solution, which is configurable and/or adaptive. What I found out the Ticket.pm really has the biggest potential for performance enhancement. I didn't cover the whole customer interface though, so I'm really interested in what you might come up with there.

Greets
Dan
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Re: MySQL Booster für 2.4.x V1.0.2 (Bitte Updaten!)

Post by Andre Bauer »

Because we have a complete english thread now about the mysql booster, we should use this to talk about it.

Please use the tew thread: http://forums.otrs.org/viewtopic.php?f= ... 906#p31906

Because of http://forums.otrs.org/viewtopic.php?f=2&p=28356#p28356 im closing this thread.

Closed...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Locked