Adresse auswählen sehr langsam

alles was in keine andere Kategorie passt

Adresse auswählen sehr langsam

Hallo,

ich habe seit einer Weile das Problem, das CAO sehr sehr langsam ist, wenn es darum geht, eine Adresse z.B. bei Vorgänge - Rechnung auszuwählen. Selbst wenn schon eine Kundennummer belegt ist und ich an der Adresse noch etwas ändern möchte, das System also nur noch einen konkreten Datensatzladen muß, dauert das 20-30 Sekunden. Das ist sehr nervig wenn man hunderte Belege am Tag zu bearbeiten hat. In älteren Programmversionen war das nicht so. Hab dazu auch schon mal ein Ticket aufgemacht, aber bisher keine Antwort dazu. Hat jemand anderes auch das Problem?

Re: Adresse auswählen sehr langsam

Hallo Novel,

hast Du evtl. SQL-Log aktiviert. Evtl. könnte auch eine Datenbankoptimierung etwas bringen.

Helmut

Re: Adresse auswählen sehr langsam

1) Ich kann mir beim besten willen nicht vorstellen, dass noch jemand CAO 1.4.4.208 K benutzt.
2) Wie Helmut schon sagt. SQL Log eingeschaltet?
3) Hilft eine Datenbankoptimierung? (Datei-> Datenbank prüfen, optimieren, reparieren) .. Optimieren sollte reichen.
4) Hunderte Belege am Tag. Wieviele sind es denn genau? Irgendwann kommt auch eine Datenbankanwendung an Grenzen. Da könnte eine MySQL Optimierung helfen. (Mehr Speicher zuweisen etc.)
5) Welcher Bugtracker-Eintrag?
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."


Re: Adresse auswählen sehr langsam

Ich kann das nicht nachstellen. Das muss irgendwie an der Kombination Datenbank<->Hardware<->Einstellungen liegen.
20-03-_2021_16-50-58.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Adresse auswählen sehr langsam

Sorry. Ich verwende die aktuelle Version 1.5.0.43. Der Server ist ein 16 Kern-Rechner mit 32 GB RAM mit einer Samsung 980Pro SSD. Viel schneller geht eigentlich nicht. Netzwerk natürlich auch 1 GB/s
Log ist natürlich auch ausgeschaltet. Das Problem existiert nicht nur auf meinem Rechner, sondern auch auf allen anderen Rechnern im Netzwerk

Re: Adresse auswählen sehr langsam

3) Hilft eine Datenbankoptimierung? (Datei-> Datenbank prüfen, optimieren, reparieren) .. Optimieren sollte reichen.
4) Hunderte Belege am Tag. Wieviele sind es denn genau? Irgendwann kommt auch eine Datenbankanwendung an Grenzen. Da könnte eine MySQL Optimierung helfen. (Mehr Speicher zuweisen etc.)
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Adresse auswählen sehr langsam

und über Wlan arbeitet ihr nicht?
(ich weiß, da steht was von: Netzwerk natürlich auch 1 GB/s)


Ich frage deswegen immer so blöd nach Wlan,
weil ich die Inventur über Laptop & Wlan gemacht habe,
und das war wirklich lahmarschig (alter Laptop & weit weg von der Fritzbox)

Re: Adresse auswählen sehr langsam

Nein. Alle PC's sind mit Kabel verbunden. Ich hab jetzt auch nochmal die Tabellenoptimierung drüber laufen lassen. Ändert auch nichts.

Re: Adresse auswählen sehr langsam

Im Adressstamm. Wie steht dort im Menü->Ansicht->Treffer?
Das sollte bei ~60K Adressen nicht auf Alle stehen.
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Adresse auswählen sehr langsam

Steht auf 10. Hatte ich vorher schon geprüft. Ändert auch nichts.

Re: Adresse auswählen sehr langsam

Jetzt wird es langsam schwierig.
2-3 Sekunden ok. 20-30 deutet auf einen sehr heftigen Flaschenhals hin.

Unter Tools->Export bitte mal ein Script anlegen.

Inhalt

Code: Alles auswählen

SELECT * FROM ADRESSEN
Wie lange dauert das Script?`
Dann bitte nochmal mit

Code: Alles auswählen

SELECT * FROM ADRESSEN ORDER BY NAME1
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Adresse auswählen sehr langsam

Innerhalb von CAO dauern beide Abfrage mehrere Minuten.

Innerhalb von Heidi-SQL gehen beide innerhalb einer Sekunde. Ist meines Erachtens deshalb kein Indexproblem, sondern muß innerhalb CAO passieren?

Re: Adresse auswählen sehr langsam

Wir müssten bei solchen dingen eine Datensicherung zum Testen haben.
Angenommen wir hätten ein Tool, welches jegliche Personenbezogenen Daten unkenntlich macht. (Stammdaten und alle Journale)

Wäre das denkbar?
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Adresse auswählen sehr langsam

ja, das wäre möglich. Geht es nur um die Adress-Tabelle?

Re: Adresse auswählen sehr langsam

Nein leider nicht. Ich habe hier Fake-Adressdaten ~500.000 Stück. Damit öffnet sich der Stamm und die Auswahl aus z.B Rechnungen innerhalb von 2-3 Sekunden.

Selbst wenn der Adress-Stamm geöffnet wird, werden diverse andere Tabellen abgefragt die Probleme machen könnten.
Daher müsste die Datensicherung so komplett wie möglich sein. Wir müssen nur vorher alles Anonymisieren.
Uns interessieren keine Betriebsdaten und auch keine Personendaten. Die Anzahl von Positionen in einem Beleg, die Belege pro Kunde - All das kann helfen.
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Adresse auswählen sehr langsam

Habe gerade noch mal etwas probiert. Ich habe hier eine zweite Firma mit nicht ganz so vielen Adressen. Dort tritt aber exakt das gleiche Problem mit den Adressen auf.

Hab deshalb nun einen komplett neuen Mandanten erzeugt und dann aus einem der alten Mandanten einen sql-Export der Adressen gemacht und die Daten dann in die neue DB (ohne Erstellung der Tabelle, nur die Nutzdaten)
importiert. Auch hier tritt das gleiche Problem mit der langen Ladezeit auf.

Re: Adresse auswählen sehr langsam

Und genau das können wir nicht nachstellen.
Ist da vielleicht etwas "besonderes" an den Adressen?
- Viele Daten im Info Feld?
- Benutzerfelder?
- Merkmale?
- etc.

Eine Sache könnte man noch testen. MariaDB lokal an einem Arbeitsplatz installieren und dort eine aktuelle Datensicherung einspielen. Dann wäre das Netzwerk außen vor.
Das hat mir in 2-3 Fällen schonmal den richtigen Weg gezeigt.
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Adresse auswählen sehr langsam

Ich habe das Problem jetzt lösen können. Ich hatte erst in dem Testmandanten die kritischen Daten wie Name mit Zufallswerten überschrieben. Dann ging es komischerweise sehr schnell.
Dann habe ich nur die Tabellenerstellung als SQL exportiert, dann aus den betroffenen Mandanten nur die Nutzdaten und dann die Tabelle gelöscht und mit dem Leertabellenscript neu erzeugt und mit den Nutzdaten neu befüllt.
Jetzt läuft es so schnell wie es soll. Hat bei beiden Mandanten funktioniert.
Wenn ich die Tabellenstruktur der langsamen Tabelle beibehalten habe und nur die Nutzdaten nochmal neu eingespielt habe, hat es keine Veränderung gebracht.

Wenn ich im neuen Testmandanten dann das Tabellenscript der langsamen Tabelle verwende, wird auch diese langsam
Hier mal das Tabellenscript der langsamen Tabelle

CREATE TABLE IF NOT EXISTS `adressen` (
`REC_ID` int(11) NOT NULL AUTO_INCREMENT,
`MATCHCODE` varchar(255) DEFAULT NULL,
`KUNDENGRUPPE` int(11) NOT NULL DEFAULT 0,
`SPRACH_ID` int(11) NOT NULL DEFAULT 2,
`GESCHLECHT` char(1) NOT NULL DEFAULT '-',
`KUNNUM1` varchar(20) DEFAULT NULL,
`KUNNUM2` varchar(20) DEFAULT NULL,
`NAME1` varchar(80) DEFAULT NULL,
`PLZ` varchar(10) DEFAULT NULL,
`ORT` varchar(100) DEFAULT NULL,
`LAND` varchar(5) DEFAULT NULL,
`NAME2` varchar(80) DEFAULT NULL,
`NAME3` varchar(80) DEFAULT NULL,
`ABTEILUNG` varchar(80) DEFAULT NULL,
`ANREDE` varchar(40) DEFAULT NULL,
`STRASSE` varchar(100) DEFAULT NULL,
`HAUSNR` varchar(10) DEFAULT NULL,
`ADRESSZUSATZ` varchar(20) DEFAULT NULL,
`POSTFACH` varchar(40) DEFAULT NULL,
`PF_PLZ` varchar(10) DEFAULT NULL,
`DEFAULT_LIEFANSCHRIFT_ID` int(11) NOT NULL DEFAULT -1,
`GRUPPE` varchar(4) DEFAULT NULL,
`FSKGRP` enum('Y','N') NOT NULL DEFAULT 'N',
`TELE1` varchar(100) DEFAULT NULL,
`TELE2` varchar(100) DEFAULT NULL,
`FAX` varchar(100) DEFAULT NULL,
`FUNK` varchar(100) DEFAULT NULL,
`EMAIL` varchar(100) DEFAULT NULL,
`EMAIL2` varchar(100) DEFAULT NULL,
`INTERNET` varchar(100) DEFAULT NULL,
`DIVERSES` varchar(100) DEFAULT NULL,
`BRIEFANREDE` varchar(100) DEFAULT NULL,
`BLZ` varchar(20) DEFAULT NULL,
`KTO` varchar(20) DEFAULT NULL,
`BANK` varchar(40) DEFAULT NULL,
`IBAN` varchar(100) DEFAULT NULL,
`SWIFT` varchar(100) DEFAULT NULL,
`KTO_INHABER` varchar(80) DEFAULT NULL,
`SEPA_MANDAT_ID` varchar(50) DEFAULT NULL,
`SEPA_MANDAT_ERTEILT` date DEFAULT NULL,
`SEPA_LART` varchar(4) DEFAULT NULL,
`SEPA_STYP` tinyint(2) DEFAULT NULL,
`DEB_NUM` int(11) DEFAULT NULL,
`KRD_NUM` int(11) DEFAULT NULL,
`STATUS` int(11) DEFAULT NULL,
`NET_SKONTO` decimal(5,1) DEFAULT NULL,
`NET_TAGE` tinyint(4) DEFAULT NULL,
`BRT_TAGE` tinyint(4) DEFAULT NULL,
`WAEHRUNG` varchar(5) NOT NULL,
`UST_NUM` varchar(25) DEFAULT NULL,
`UID` varchar(15) DEFAULT NULL,
`VERTRETER_ID` int(11) unsigned NOT NULL DEFAULT 0,
`PROVIS_PROZ` decimal(5,2) NOT NULL DEFAULT 0.00,
`INFO` mediumtext DEFAULT NULL,
`GRABATT` decimal(5,2) DEFAULT NULL,
`KUN_KRDLIMIT` decimal(10,2) DEFAULT NULL,
`KUN_LIEFART` int(11) NOT NULL DEFAULT -1,
`KUN_ZAHLART` int(11) NOT NULL DEFAULT -1,
`KUN_PRLISTE` enum('N','Y') NOT NULL DEFAULT 'N',
`KUN_LIEFSPERRE` enum('N','Y') NOT NULL DEFAULT 'N',
`KUN_MWST_1` decimal(5,2) DEFAULT 0.00,
`KUN_MWST_2` decimal(5,2) DEFAULT 0.00,
`KUN_MWST_3` decimal(5,2) DEFAULT 0.00,
`KUN_EORI` varchar(20) DEFAULT NULL,
`LIEF_LIEFART` int(11) NOT NULL DEFAULT -1,
`LIEF_ZAHLART` int(11) NOT NULL DEFAULT -1,
`LIEF_PRLISTE` enum('N','Y') NOT NULL DEFAULT 'N',
`LIEF_TKOSTEN` decimal(10,2) NOT NULL DEFAULT 0.00,
`LIEF_MBWERT` decimal(10,2) NOT NULL DEFAULT 0.00,
`PR_EBENE` tinyint(1) DEFAULT 5,
`BRUTTO_FLAG` enum('N','Y') NOT NULL DEFAULT 'N',
`MWST_FREI_FLAG` enum('N','Y') NOT NULL DEFAULT 'N',
`MWST_LAND_FLAG` tinyint(1) DEFAULT 0,
`KUNPREIS_AUTO` enum('N','Y') NOT NULL DEFAULT 'N',
`KUN_SEIT` date DEFAULT NULL,
`KUN_GEBDATUM` date DEFAULT NULL,
`ENTFERNUNG` int(10) unsigned DEFAULT NULL,
`ERSTELLT` date DEFAULT NULL,
`ERST_NAME` varchar(100) DEFAULT NULL,
`GEAEND` date DEFAULT NULL,
`GEAEND_NAME` varchar(100) DEFAULT NULL,
`KUNDENKARTE` enum('N','Y') NOT NULL DEFAULT 'N',
`SHOP_KUNDE` enum('N','Y') NOT NULL DEFAULT 'N',
`SHOP_ID` tinyint(3) NOT NULL DEFAULT -1,
`SHOP_NEWSLETTER` enum('N','Y') NOT NULL DEFAULT 'N',
`SHOP_KUNDE_ID` int(11) NOT NULL DEFAULT -1,
`SHOP_CHANGE_FLAG` tinyint(1) unsigned NOT NULL DEFAULT 0,
`SHOP_DEL_FLAG` enum('N','Y') NOT NULL DEFAULT 'N',
`SHOP_PASSWORD` varchar(20) DEFAULT NULL,
`STAPELBUCHUNG` tinyint(2) NOT NULL DEFAULT 0,
`USERFELD_01` varchar(255) DEFAULT NULL,
`USERFELD_02` varchar(255) DEFAULT NULL,
`USERFELD_03` varchar(255) DEFAULT NULL,
`USERFELD_04` varchar(255) DEFAULT NULL,
`USERFELD_05` varchar(255) DEFAULT NULL,
`USERFELD_06` varchar(255) DEFAULT NULL,
`USERFELD_07` varchar(255) DEFAULT NULL,
`USERFELD_08` varchar(255) DEFAULT NULL,
`USERFELD_09` varchar(255) DEFAULT NULL,
`USERFELD_10` varchar(255) DEFAULT NULL,
`WERBUNG_FLAG` enum('Y','N') NOT NULL DEFAULT 'N',
`BEREINIGEN_FLAG` enum('Y','N') NOT NULL DEFAULT 'Y',
`ENDS_FLAG` enum('Y','N') NOT NULL DEFAULT 'N',
`DRUCK_MAIL_FLAG` tinyint(2) NOT NULL DEFAULT -1,
`LIEFSPERRE_GRUND` varchar(255) DEFAULT NULL,
`GRABATT_TYP` tinyint(2) NOT NULL DEFAULT 0,
`EMAIL_FLAG` tinyint(2) NOT NULL DEFAULT 1,
`EMAIL2_FLAG` tinyint(2) NOT NULL DEFAULT 0,
`LEITWEG_ID` varchar(150) DEFAULT NULL,
`E_RECHNUNG` tinyint(2) NOT NULL DEFAULT 0,
PRIMARY KEY (`REC_ID`),
KEY `IDX_KUNNUM1` (`KUNNUM1`),
KEY `IDX_MATCH` (`MATCHCODE`)
) ENGINE=MyISAM AUTO_INCREMENT=145445 DEFAULT CHARSET=utf8;

Ein Vergleich der Erstellungsscripte hat folgende Unterschiede gezeigt:

`INFO` mediumtext DEFAULT NULL, zu `INFO` text DEFAULT NULL,
und
ENGINE=MyISAM AUTO_INCREMENT=145445 DEFAULT CHARSET=utf8; zu ENGINE=MyISAM AUTO_INCREMENT=145445 DEFAULT CHARSET=latin1;

Re: Adresse auswählen sehr langsam

Wie kommt denn da ein Mediumtext rein? In ein Text feld passen 64kb. In ein MediumText 16mb. Da wunderts mich nicht, dass die Adressen langsam sind.
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."