Zeige Artikel 1 bis 10 von 11
Weiter 1 Ältere Artikel »
Displaying posts with tag: sql (reset)
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]
INFORMATION_SCHEMA.PROCESSLIST

Finde mir alle Queries eines bestimmten Users, die lange Zeit idle sind: Wer spammt mir die Prozessliste zu und verbraucht meine max_connections?

CODE:root@recorder [(none)]> select 

  substring_index(host, ':', 1) as h, 

  count(host) as n 

from 

  information_schema.processlist 

where

  command = 'sleep' and 

  time > 120 and

  user = 'eviluser' 

group by 

  h\G

h: localhost

n: 1

h: defektekiste

n: 6

2 rows in set (0.01 sec)

INFORMATION_SCHEMA.PROCESSLIST ist neu in MySQL 5.1. Es erlaubt ganz wunderbar nach Irrläufern, bösen Queries und anderen …

[Mehr]
mySQL: Update if exists else insert record (SQL statement)

Wenn Sie einen Datensatz in eine Datenbanktabelle einfügen möchten (wenn er noch nicht existiert) oder diesen updaten möchten (wenn er existiert), hilft dieser SQL Befehl:

1
INSERT INTO TABLE (FIELDS) VALUES (VALUES) ON DUPLICATE KEY UPDATE FIELD = VALUE

Dieses Statement prüft, ob der Primary Key (PK) für den einzufügenden Datensatz bereits besteht, nutzt dann ein Update Befehl und ansonsten Ihren angegeben Insert Befehl.

Beispiel

Wir haben eine Tabelle “Test” mit den Feldern “A”, “B” (je vom Typ varchar) und “C” (integer). Die Felder “A” und “B” sind unser PK.

Ein normales SQL Insert Statement in die leere Tabelle:

1
2
INSERT INTO Test (A,B,C) VALUES ('Testtext A1','Texttext B1', 110);
INSERT …
[Mehr]
Ein paar Gedanken zu Zeitreihendaten

Ich sitze hier auf der Open Source Monitoring Conference und unterhalte mich mit ein paar Nagios bzw. Icinga Entwicklern. Dabei hörte ich einen Haufen Flüche über NDO - Nagios Data Out. Ich schaue mir gerade die Dokumentation zum NDO Schema an und stelle fest, daß die Ideen hier auf eine Weise viele Fehler teilen, die auch dem MySQL Enterprise Manager Schema zugrunde liegen (Noch, das MEM-Team bastelt das grad um).



"Ein paar Gedanken zu Zeitreihendaten" vollständig lesen

Ein paar Gedanken zu Foreign Key Constraints

Ich lese gerade SQLite Foreign Key Support und ich muß sagen, ich kann mir ein leichtes Grinsen nicht verkneifen.

Also, ich finds ja gut, daß SQLite die Option für Foreign Key Constraints implementiert und ich finds sogar noch besser, daß mit DEFERRABLE INITIALLY DEFERRED sogar die einzig sinnvolle Weise das zu tun bereitgestellt wird, aber ich frag mich schon, wozu das gut sein soll.



"Ein paar Gedanken zu Foreign Key Constraints" vollständig lesen

Zeige Artikel 1 bis 10 von 11
Weiter 1 Ältere Artikel »