MySQL Abfrage dauert 7 Sekunden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Hier mal ein paar Beispielabfragen:

    Code:
    [COLOR=#000000][FONT=monospace]SELECT COUNT(*) FROM SystemEvents WHERE FromHost like '%%' AND SysLogTag like '%iked%' AND Message like '%%' AND DeviceReportedTime like '%%';[/FONT][/COLOR]
    [COLOR=#000000][FONT=monospace]SELECT  COUNT(*) FROM SystemEvents WHERE FromHost like '%192.168.222.111%' AND SysLogTag like  '%sshd%' AND Message like '%%' AND DeviceReportedTime like '%%';[/FONT][/COLOR]
    [COLOR=#000000][FONT=monospace][COLOR=#000000][FONT=monospace]SELECT  COUNT(*) FROM SystemEvents WHERE FromHost like '%192.168.222.111%' AND SysLogTag like  '%sshd%' AND Message like '%%' AND DeviceReportedTime like '%2020-05-25%';[/FONT][/COLOR][/FONT][/COLOR]
    [COLOR=#000000][FONT=monospace][COLOR=#000000][FONT=monospace][COLOR=#000000][FONT=monospace]SELECT * FROM SystemEvents WHERE FromHost like '%SERVER1%' AND SysLogTag like  '%iked%' AND Message like '%established%' AND DeviceReportedTime like '%2020-05-24 15:00:00';[/FONT][/COLOR][/FONT][/COLOR][/FONT][/COLOR]
    Code:
    SELECT DeviceReportedTime, FromHost, SysLogTag, Message FROM SystemEvents WHERE FromHost like '%%' AND SysLogTag like '%%' AND Message like '%%' AND DeviceReportedTime like '2020-05-%' ORDER BY ID DESC LIMIT 100;"
    
    ...
    | 2020-05-25 20:49:38 | 192.168.222.111 | iked | blabla1 |
    | 2020-05-25 20:50:10 | SERVER1 | sshd | S 2044760468:2044760468(0) win 29200 <mss 1460,sackOK,timestamp 2253946112 0,nop,wscale 7> (DF) |
    | 2020-05-25 20:15:22 | SERVER1 | CRON | May 25 20:49:31.728457 rule 648/(match) |
    ...

    Kommentar


    • #17
      Da sind halt überall noch die LIKE drin. Solange du die drin lässt, bleibt es langsam. Da brauchen wir gar nicht mehr weiterreden.

      Tabellenstruktur und Beispieldaten bitte als SQL-Code posten. So kann man damit nix anfangen.

      Kommentar


      • #18
        Das wäre ja auch ein Teil meiner Frage, wie ich das like ersetzen kann.


        Code:
        CREATE TABLE `SystemEvents` (
          `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
          `CustomerID` bigint(20) DEFAULT NULL,
          `ReceivedAt` datetime DEFAULT NULL,
          `DeviceReportedTime` datetime DEFAULT NULL,
          `Facility` smallint(6) DEFAULT NULL,
          `Priority` smallint(6) DEFAULT NULL,
          `FromHost` varchar(60) DEFAULT NULL,
          `Message` text,
          `NTSeverity` int(11) DEFAULT NULL,
          `Importance` int(11) DEFAULT NULL,
          `EventSource` varchar(60) DEFAULT NULL,
          `EventUser` varchar(60) DEFAULT NULL,
          `EventCategory` int(11) DEFAULT NULL,
          `EventID` int(11) DEFAULT NULL,
          `EventBinaryData` text,
          `MaxAvailable` int(11) DEFAULT NULL,
          `CurrUsage` int(11) DEFAULT NULL,
          `MinUsage` int(11) DEFAULT NULL,
          `MaxUsage` int(11) DEFAULT NULL,
          `InfoUnitID` int(11) DEFAULT NULL,
          `SysLogTag` varchar(60) DEFAULT NULL,
          `EventLogType` varchar(60) DEFAULT NULL,
          `GenericFileName` varchar(60) DEFAULT NULL,
          `SystemID` int(11) DEFAULT NULL,
          `processid` varchar(60) NOT NULL DEFAULT '',
          `checksum` int(11) unsigned NOT NULL DEFAULT '0',
          PRIMARY KEY (`ID`)
        );
        
        
        INSERT INTO `SystemEvents` VALUES (1,NULL,'2020-04-24 15:12:30','2020-04-24 15:12:30',3,6,'192.168.222.111',' Stopping System Logging Service...',
        NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'systemd[1]:',NULL,NULL,NULL,'',0),(2,NULL,'2020-04-24 15:12:30','2020-04-24 15:12:30',3,
        6,'SERVER1',' Stopped System Logging Service.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'systemd[1]:',NULL,NULL,NULL,'',0)
        ,(3,NULL,'2020-04-24 15:12:30','2020-04-24 15:12:30',5,6,'SERVER1','  [origin software=\"rsyslogd\" swVersion=\"8.32.0\" x-pid=\"1692\" x-
        info=\"http://www.rsyslog.com\"] exiting on signal 15.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'rsyslogd:',NULL,NULL,NULL,'',0),
        (4,NULL,'2020-04-24 15:12:30','2020-04-24 15:12:30',3,6,'SERVER1',' Starting System Logging Service...',NULL,NULL,NULL,NULL,NULL,NULL,NULL
        ,NULL,NULL,NULL,NULL,1,'systemd[1]:',NULL,NULL,NULL,'',0);

        Kommentar


        • #19
          Die Sache ist, dass die MySQL Fulltext-Search nur sinnvoll nach Wörtern suchen kann. Eine IP-Adresse ist kein Wort. Und auch ein Datum ist kein Wort.

          Du musst dir wohl ein anderes Datenbanksystem für den Zweck suchen. Oder eine richtige Search-Engine wie z.B. Lucene.

          Eine Alternative wäre, dass du beim Schreiben der Daten die für dich relevanten Werte, nach denen du suchen möchtest, in extra Spalten speicherst. Zum Beispeil eine Spalte, die ausschließlich eine IP-Adresse oder ein Datum enthält, kann wunderbar indexiert und von MySQL durchsucht werden.

          Kommentar

          Lädt...
          X