Mailinglisten-Archive |
Hallo Sebastian, > diese Äußerung verwundert mich, wenn man hier schon mitredet sollte man > doch wenigstens MySQL kennen, zumindest das Handbuch! > > es hat einen ganz einfachen Grund: Geschwindigkeit! > > da es oft so ist das die Langen Textfelder oder BLOBS (wesentlich) > seltener gebraucht werden als die restlichen Felder, sie blähen die > Datei in der die Tabelle abgelegt ist auf, und erhöhen somit die Suche > nach Daten und vor allem das auslesen der Datensätze, selbst wenn MySQL > den Index nimmt zum suchen. naja mich darf das jetzt auch mal wundern. Auf der einen Seite sprichst du von Suche wenn du z.B. auch Zugriff via Primary Key meinst, weil das ist alles andere als eine Suche und ignorierst damit Index Zugriffsverfahren auf Daten. Auf der anderen Seite krizelst du an Geschwindigkeitsoptimierungen innerhalb der Dateistruktur von MySQL rum. Die Aussage zum Thema Geschwindigkeit gilt (auch da nur halb) nur by MyISAM Tabellen. InnoDB z.B. verhält sich in dem Fall ganz anders bzw. dort gibt es diese Optimierungstricks nicht. Halb gilt das ganze nur deswegen weil die "Suche" über Index nicht von der Größe der Datendatei anhängt. Und auch nur deswegen halb weil der Datenzugriff nur deswegen "langsamer" ist weil er mehr Datenblöck von Platte lesen muss um die _verzeigerten_ Daten lesen zu können. Eine separate Datei führt beim Zugriff auf Daten darin zum einen zu einem select oder join mehr. Außerdem müssen in dem Fall unterm Strich mehr Daten gelesen werden als nötig. Noch zu beachten ist der Aspekt das ein Datenbankserver auch hinreichend Dimensioniert sein sollte. Ich erinnere mich da an eine nette Aussage von Norbert der da meinte das in einem ordentlichen Datenbankserver die DB sowieso fast vollständig im Ram gecacht wird :-) > außerdem ist MySQL mit rein Statischen Tabellenbreiten nun mal schneller > (laut Handbuch) und Langtexte/BLOBS sind nunmal dynamisch > > http://www.mysql.com/doc/en/Data_size.html Die Aussage im Handbuch "If you don't have any variable-length columns (VARCHAR, TEXT, or BLOB columns), a fixed-size record format is used. This is faster but unfortunately may waste some space. See section 7.1.2 MyISAM Table Formats. " gilt nicht uneingeschränkt. Durch einen größeren Datensatz fester größe wird mehr Platz verbraucht was zu schlechterem Caching und vor allem damit auch zu mehr IO führt. In Memory Operation da Daten kleiner sind sind immer schneller als Operation die auf Grund der Datengröße on Disk ausgeführt werden. Und wie auch schon oben: es gilt nur für MyISAM. MyISAM hat für den Einsatz in großen Anwendungen erhebliche Probleme. Zu nennen wäre nur z.B. das Sperren von Tabellen bei INSERT wenn gelöschte Datensätze vorhanden sind. Oder das Sperren von Tabellen währen dem fetchen von Daten aus einem Select. Das kann zu Deadlocks in der ganzen Anwendung führen. Aber das nur mal so am Rand ... Gruß, Andreas PS: Vielleicht greifst du nicht gleich jeden an der dein Ego etwas kränkt. Solche Aussagen wie > diese Äußerung verwundert mich, wenn man hier schon mitredet sollte man > doch wenigstens MySQL kennen, zumindest das Handbuch! kannst du echt stecken lassen. Vielleicht wirkt das ja bei anderen aber in meinen Augen machst du dich so nur lächerlich. Axo und da es mir gerade einfällt: Ich kenne MySQL seit Jahren im praktischen Einsatz - das ist allemal besser als ein Handbuch zu kennen und "laut Handbuch" zu reden. -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive