Zeige Artikel 1 bis 10 von 15
Weiter 5 Ältere Artikel »
Displaying posts with tag: sql (reset)
Groß- und Kleinschreibung für Fortgeschrittene: MySQL und lower_case_table_names

Ab und zu kommt es vor, dass die eine oder andere Applikation ungünstig formulierte Statements an einen MySQL-Server schickt. Dies kann dann zu Performance-Problemen führen, da beispielsweise vom Optimizer ein ungünstiger Ausführungsplan generiert wird. Im besten Fall kann der Entwickler der Software dieses Problem schnell für einen Fix selbst lösen. In vielen Fällen, z.B. bei Kaufsoftware oder bei kompilierten Code, ist dies nicht so einfach möglich.

Mehr dazu unter: https://blog.ordix.de/query-rewriting-mit-mysql

MySQL InnoDB Cluster: "Schlüsselmomente" beim Import

Dieser Beitrag bezieht sich auf ein Problem eines unserer Kunden, welches beim Import einer Datenbank in ein neues InnoDB Cluster entstanden ist.

Unser Kunde ist dabei, seine bestehende (veraltete) MySQL-5.5-Single-Instanz-Datenbank zu migrieren. Die Zielumgebung soll dabei aus einem Drei-Knoten-InnoDB-Cluster bestehen.

Mehr dazu unter: https://blog.ordix.de/mysql-innodb-cluster-import

Plug & Play: MySQL Shell Plugins mit Python

Die MySQL Shell ist ein nützliches Werkzeug. Sie stellt einen adäquaten Ersatz für den bekannten "mysql"-Client dar, bietet darüber hinaus aber unzählige weitere Funktionen und Features. So kann der Funktionsumfang der MySQL Shell beispielsweise relativ einfach über sogenannte Plugins erweitert werden. Als Programmiersprache kommen hierbei JavaScript oder Python in Frage.

Mehr dazu unter: https://blog.ordix.de/plug-play-mysql-shell-plugins-mit-python

Statistisch gesehen...

Die Laufzeit von Queries werden auch durch den Optimizer bestimmt.
Dazu werden auch Statistiken genutzt, die wir uns in dem folgenden Blog näher anschauen:

ORDIX Blog

MySQL Document Store: Zwischen den Welten: SQL oder NoSQL?

Anbei ein Link zum Thema MySQL & Document Store: ORDIX News

Zu Besuch bei Redis

Hier ist eine wichtige Zahl:

Ein Coredump von einem MySQL auf einer Maschine mit knapp unter 200G Speicher dauert 15 Minuten. Auf SSD. Auf eine Festplatte dauert der gleiche Coredump dann knapp über 30 Minuten.

Warum ist das eine wichtige Zahl?

SSD sind schnell. Linear schreiben sie mehr als 200 MB pro Sekunde weg - ein ziemlich beeindruckendes Tempo, und noch dazu in einer Disziplin, wo sie nicht einmal optimal nutzbar sind. Auch moderne Serverfestplatten sind schnell - beim linearen Schreiben immerhin knapp halb so schnell wie eine SSD, oder 100 MB pro Spindel linear.

Aber moderne Maschinen haben halt auch eine sehr große Menge Speicher. Und 200 GB bei 200MB pro Sekunde sind halt dann eine Viertelstunde pro Full Dump oder Full Scan.


In Eine reiche NoSQL-Anfragesprache macht Ulf Wendel sich …

[Mehr]
'a' = 'b' = 'c'

Kurzer SQL WTF von heute:

QUOTE:mysql> SELECT 'a'='b';

0

mysql> SELECT 'a'='b'='c';

1

Warum ist das so?


Im MySQL Sourcecode ist in sql/sql_yacc.yy definiert:

QUOTE:%left EQ EQUAL_SYM GE GT_SYM LE LT NE IS LIKE REGEXP IN_SYM

Damit ist der Operator EQ (das Vergleichheitszeichen) als links-assoziativ definiert. Vergleiche von Vergleichen sind also zugelassen, 1 = 2 = 3 ist also ein zulässiges Konstrukt und es wird als ( 1 = 2 ) = 3 evaluiert. Statt links-assoziativ könnte es auch als rechts-assoziativ ( 1 = (2 = 3 )) oder als nicht-assoziativ (ein Mehrfachvergleich ist unzulässig) definiert sein.

Daher ist der boolsche Ausdruck 'a' = 'b' offensichtlich falsch, also 0. Und damit wird "0 = 'c'" zu einem Vergleich eines Integers links mit einem Character rechts. In einem links-assoziativen Ausdruck bestimmt der linke Ausdruck den Typ, zu dem der …

[Mehr]
Covering indexes und MVCC

Für viele MySQL-Anwendungen sind Covering Indexes eine wichtige Sache. Domas hat einen Artikel darüber Wie Wikipedia von Covering Indexes profitiert, und auch sonst sind solche Indices für viele MySQLer ein täglicher Bestandteil der Optimierungsarbeit.

Nun las ich neulich in einem Artikel eine Seitenbemerkung, daß Postgres keine Covering Indices unterstützt und das scheint tatsächlich der Fall zu sein, auch wenn ich in der Doku selber keine Hinweise darauf gefunden habe.

Warum Postgres das nicht kann ist zunächst einmal klar: MVCC macht das sehr schwierig. In meinem Vortrag zur InnoDB Storage Engine ( …

[Mehr]
Was bedeutet eigentlich 'Relationale Algebra'?

SQL ist eine Abfragesprache, die als mathematischen Unterbau die Relationenalgebra hat. Was genau ist das?

Da ist einmal der Begriff der "Algebra". In der Wikipedia findet man die mathematische Definition der algebraischen Struktur, und sie ist, weil sie mathematischen Formalismen genügen muß, für den ungeübten ein wenig unhandlich zu lesen.

Dort steht aber nix anderes als 'Wir haben eine Grundmenge A und einen definierten Satz von erlaubten Operationen auf A, und wir garantieren, das das Ergebnis jeder Operation wieder in A liegt.' Mehr nicht. Eine Algebra ist also eine Struktur, die Elemente enthält, mit denen man rechnen kann (etwa die natürlichen Zahlen), und Operationen, die definieren, was erlaubte Rechenoperationen sind (etwa die Addition). Wenn …

[Mehr]
Gruppenweises TOP N in MySQL: Der Tabellengrößenreport

Jeder Datenbankserver bei uns hat ein Script laufen, daß den Inhalt von information_schema.tables jede Nacht einmal in eine Systemdatenbank in das DBA Schema kopiert. Dort haben wir dba.table_sizes:

CODE:root@sysmdb [dba]> show create table table_sizes\G

       Table: table_sizes

Create Table: CREATE TABLE `table_sizes` (

  `hostname` varchar(64) NOT NULL,

  `datadir` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,

  `report_date` date NOT NULL,

  `table_schema` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,

[Mehr]
Zeige Artikel 1 bis 10 von 15
Weiter 5 Ältere Artikel »