PythonQ 240-8XX Manual do Utilizador Página 724

  • Descarregar
  • Adicionar aos meus manuais
  • Imprimir
  • Página
    / 768
  • Índice
  • MARCADORES
  • Avaliado. / 5. Com base em avaliações de clientes
Vista de página 723
Anhang D: Anmerkungen zur Portierung auf andere Systeme 703
UPDATE tabelle SET spalte=wert WHERE eindeutige_schluessel_nummer
DELETE FROM tabelle WHERE eindeutiger_schluessel=#
SELECT in Kombination mit INSERT (und sehr wenigen UPDATE’s und DELETE’s).
Viele Scans / GROUP BY auf die gesamte Tabelle ohne irgend welche Schreibvorg¨ange.
Andere Optionen als Sperren auf Zeilen- / Seiten-Ebene:
Versionierung (wie die, die wir bei MySQL f¨ur gleichzeitige Einf¨ugevorg¨ange nutzen), bei
der man gleichzeitig einen Schreibvorgang haben kann, ahrend viele Lesevorg¨ange stat-
tfinden. Das heißt, dass die Datenbank / Tabelle verschiedene Sichten der Daten un-
terst¨utzt, abh¨angig davon, wann man anfing, darauf zuzugreifen. Andere Namen hierf¨ur
sind Zeitreisen, Kopieren beim Schreiben (Copy on Write) oder Kopieren bei Bedarf (Copy
on Demand).
Kopieren bei Bedarf ist in vielen allen viel besser als Sperren auf Seiten- oder Zeilenebene.
Im schlimmsten Fall wird jedoch viel mehr Speicher verbraucht als bei der Benutzung nor-
maler Sperren.
Anstelle von Zeilen-Sperren kann man Sperren auf Applikationsebene benutzen (wie
get lock/release lock in MySQL). Das funktioniert nat¨urlich nur bei ’wohl erzogenen’
Applikationen.
In vielen allen kann man auf fortgeschrittene Art raten, welcher Sperrtyp der beste f¨ur die
Applikation ist, aber allgemein ist es sehr schwer zu sagen, dass ein bestimmter Sperrtyp
besser ist als ein anderer. Alles angt von der Applikation ab, und verschiedene Teile der
Applikation onnen nach unterschiedlichen Sperrtypen verlangen.
Hier sind einige Tipps zu Sperren in MySQL:
Bei Web-Applikation f¨uhren die meisten Applikationen viele SELECTs aus, sehr wenige
DELETEs, UPDATEs haupts¨achlich auf Schl¨ussel und INSERTs in einigen bestimmten
Tabellen. Die grundlegende Einrichtung von MySQL ist hierf¨ur BESTENS optimiert.
Gleichzeitige Benutzer sind kein Problem, solange man UPDATEs und SELECTs nicht
vermischt, die beide gleichzeitig viele Zeilen in derselben Tabelle untersuchen m¨ussen.
Wenn man INSERTs und DELETEs auf dieselbe Tabelle mischt, kann INSERT DELAYED eine
große Hilfe sein.
Man kann auch LOCK TABLES benutzen, um Dinge zu beschleunigen (viele UPDATEs in-
nerhalb einer einzelnen Sperre sind viel schneller als UPDATEs ohne Sperren). Daten in
unterschiedliche Tabellen aufteilen hilft hierbei auch.
Wenn Sie Geschwindigkeitsprobleme mit den Tabellensperren in MySQL bekommen, onnen
Sie diese eventuell dadurch osen, dass Sie Ihre Tabellen in BDB-Tabellen umwandeln. Siehe
Abschnitt 8.6 [BDB], Seite 522.
Der Optimierungsabschnitt dieses Handbuchs behandelt viele verschiedene Aspekte dessen,
wie man seine Applikationen optimieren kann. Siehe Abschnitt 6.2.11 [Tips], Seite 342.
D.5 Anmerkungen zu RTS-Thread
Ich habe versucht, die RTS-Thread-Pakete bei MySQL zu benutzen, bin aber ¨uber folgende
Probleme gestolpert:
Vista de página 723
1 2 ... 719 720 721 722 723 724 725 726 727 728 729 ... 767 768

Comentários a estes Manuais

Sem comentários