Gegeben folgende Seiten:
http://web.archive.org/web/20080502185553/http://www.mysql.com/why-mysql/migration/
und
http://www.mysql.com/why-mysql/migration/
Auf beiden Seiten wird Oracle gefunden.
Tipp: Die Differenz, die Differenz! :-D
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]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', … |
Etwas irritiert war ich über die doch offensichtliche
Sinnlosigkeit das information_schema zu dumpen. Etwas was
phpMyAdmin explizit anbieten soll.
Das information_schema ist dem /proc unter Linux vergleichbar. Es
wird nichts weiter gemacht, als Informationen zu aggregieren.
Anders als /proc, in dem einige Werte gesetzt werden können, ist
das information_schema read only.
Sprich information_schema zu dumpen hat keinen Sinn, weil
sich
1. die Informationen eh aus der laufenden Datenbank ergeben
und
2. das information_schema - wie schon erwähnt - nicht
beschreibbar ist.
mysql> insert into ENGINES
values('erkan','YES',NULL,'NO','NO','NO');
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to
database 'information_schema'
Angst insofern "kaputte" Dumps zu haben, als dass diese nicht
mehr eingespielt werden können, brauch mensch nicht.
Mysqldump ignoriert …
Partitionierung gibt es seit MySQL 5.1. Eine sehr praktische
Technik mit Eigenheiten:
Gewohnt jeder Tabelle einen PK zu geben, aber nicht nach dem PK,
sondern nach einer anderen Spalte - hier jahr - zu
partitionieren, antwortet MySQL wiefolgt:
mysql> create table au ( id int not null auto_increment key,
jahr date, wichtig int) engine=myisam partition by
range(year(jahr))
(PARTITION p0 VALUES LESS THAN(2000),
PARTITION p1 VALUES LESS THAN(2005),
PARTITION p2 VALUES LESS THAN(2010),
PARTITION p3 VALUES LESS THAN(MAXVALUE));
ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the
table's partitioning function
Hierbei handelt es sich um eine dokumentierte
Einschränkung:
All columns used in the partitioning expression for a partitioned
table must be part of every unique key that the table may have ..
…
Ich ringe gerade mit einer Datenbank, die sehr viel Load hat. Wann immer ich versuche dort ein Monitoring zu installieren fällt mir der Server um, weil die Load vom Monitoring und die Load vom normalen Betrieb einfach zu viel für die Maschine sind. Zum Glück hat mir ein Kollege einen SPAN-Port auf einer anderen Maschine eingerichtet, auf dem ich eine Kopie des Traffics bekommen kann, der meinen Server so beschäftigt hält.
Mein SPAN-Interface ist eth1, und so kann ich mit
CODE:tcpdump -s 1536 -i eth1 host master and port 3306 -c 10000 -w keks etwa ein Sample des Traffics bekommen, der zum Host master auf dem MySQL-Port geht. Nach 10000 mitgeschnittenen Paketen wird das Sample abgebrochen, und mein Dump wird in die Datei keks geschrieben.
In …
[Mehr]
Heute schlug eine nette Query aus civicrm in #mysql.de auf
SELECT DISTINCT UPPER(LEFT(contact_a.sort_name, 1)) as sort_name[Mehr]
FROM civicrm_contact contact_a
LEFT JOIN civicrm_group_contact `civicrm_group_contact-101`
ON contact_a.id = `civicrm_group_contact-101`.contact_id
LEFT JOIN civicrm_group_contact `civicrm_group_contact-102`
ON contact_a.id = `civicrm_group_contact-102`.contact_id
LEFT JOIN civicrm_group_contact `civicrm_group_contact-46`
ON contact_a.id = `civicrm_group_contact-46`.contact_id
LEFT JOIN civicrm_group_contact `civicrm_group_contact-60`
ON contact_a.id = `civicrm_group_contact-60`.contact_id
LEFT JOIN civicrm_group_contact `civicrm_group_contact-6`
ON contact_a.id = `civicrm_group_contact-6`.contact_id
LEFT JOIN civicrm_group_contact `civicrm_group_contact-94` …
It is out for you now: MariaDB 5.1.42
After more than one year of work we are proud to release our
first stable version.
So far we had:
- MariaDB 5.1.32 Beta (2009-04-20)
- MariaDB 5.1.38 Beta (2009-10-29)
- MariaDB 5.1.39 Beta (2009-11-15)
- MariaDB 5.1.41 RC(2010-01-13)
- MariaDB 5.1.42 (Current Stable Release) …
Am Dienstag, 23. Februar 2010, von 9:00 bis 12:00 Uhr findet ein kostenloses MySQL Seminar in Hamburg. In diesem Seminar wird gezeigt, weshalb MySQL und Java die ideale Kombination in der Anwendungsentwicklung sind. Es werden alle relevanten Funktionen beschreiben, wie die Verbindungsmethoden für MySQL und, wie man die Performance der auf MySQL bereitgestellten Java Anwendungen [...]
Die EU meldet: Mergers: Commission clears Oracle's proposed acquisition of Sun Microsystems. Bedingungen werden keine gestellt. Damit kann Sun nun auch aus der Sicht der EU Wettbewerbskomission Oracle gehören, incl. des MySQL-Teils.