phpbar.de logo

Mailinglisten-Archive

das muss schneller gehen ...

das muss schneller gehen ...

Andreas Müller mysql at universalware.de
Mit Jul 19 09:52:50 CEST 2006


Hallo Elmar,

falls du das original Posting von Norbert gelesen hast wurden 11.459.572
Datensätze von 11.470.884 geändert und damit fast alle. Da bringt alles nix.

MySQL ist selbst so schlau bei einem Update wie "update tblsignal set
nStatus = 1" zu prüfen ob da ein Index verwendbar ist. Ob wird vor allem
davon abhängig gemacht wieviel Datensätze im Verhältnis zu den
Gesamtdatensätzen geändert werden müssen. Sind es extrem viel bei in
Norberts Fall wird KEIN Index verwendet was auch logisch ist da der
Mehraufwand des Index-Scans und der Positionierung in der Datentabelle
größer ist als ein einfacher Scan über die Daten-Tabelle.

Die von dir vorgeschlagene Bedingung würde die eigenintelligenz von MySQL
verhindern und durch den Operator "<>" und "OR" eine Index-Verwendung fast
komplett verhindern. Evtl. MySQL 5.1 kann damit etwas besser umgehen.

Die Frage von Sebastian zur Art der Zeilebreite ist dagegen eine Überlegung
wert. Tabellen mit "rowlength=fixed" haben den Vorteil das man hier immer in
gleichen Blocklängen von Datensatz zu Datensatz navigieren kann was
schneller sein kann - aber nicht immer schneller ist. Vor allem Tabellen
lange Strings zwingen hier feste Zeilenlängen oft in die Knie: Der Overhead
an zu lesenden Daten ist dann so groß das mehr IO Aktivitäten benötogt
werden als man durch den Vorteil der gleichen Satzlänge an Aufwand spart.
Nach meiner Erfahrung für Statistik Taellen - also oft lesen, selten
schreiben (und darum handelt es sich bei Norbert) - lohnt sich das ganze bis
zum Größenfaktor 2 gegenüber der dynamischen Satzlänge - sprich: Ist meine
Tabelle mit fester Satzlänge mehr als doppelt so groß wie mit dynamischer
Satzlänge bringt eine feste Satzlänge warscheinlich keinen wenn nicht sogar
den gegenteiligen Effekt. Tabellen in denen häufig geändert wird, vor allem
wo häufig Zeichenketten geändert werden profitieren dagegen in der Regel
immer von einer festen Satzlänge.

Gruß,
Andreas


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive