SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 29.04.2011, 23:40:22
mikexxl mikexxl ist offline
Anfänger
 
Registriert seit: Apr 2011
Alter: 57
Beiträge: 10
AW: Tabellenvergleich performance

die Umstellung des index-Key dauert immer noch an.

Weiß nicht warum. Unter show processlist steht immer noch: copy to tmp table
Die zweite tabelle hat noch nicht den Index


Nur zum Verständnis, wenn ich tab1 mit tab 2 vergleiche, und als Ergenbis nur tab2 ohne tab1 (alle, welche nicht in tab1 sind), ist das nicht ein right join?
Mit Zitat antworten
  #12  
Alt 30.04.2011, 13:19:07
mikexxl mikexxl ist offline
Anfänger
 
Registriert seit: Apr 2011
Alter: 57
Beiträge: 10
AW: Tabellenvergleich performance

was ich gemachr habe:
habe tabelle tab1 und tab2 neu erstellt, x als VARCHAR 50 und index

tab 1 hat 2 und x spalten, tab 2 hat 11 und x spalten
Einspielen der Daten
mysql> insert into `db`.`tab1` (a,b,x)
-> select a,b,
-> CONCAT(a,' ',b) AS x
-> from `db`.`quelle`;
Query OK, 14372615 rows affected (6 hours 38,35 sec)
Records: 14372615 Duplicates: 0 Warnings: 0

mysql> insert into `coxulto`.`tab2` (spalten,x)
-> select spalten,
-> CONCAT(r,' ',p) AS x
-> from `db`.`quelle2`;
Query OK, 13629550 rows affected, 1 warning (9 min 2,78 sec)
Records: 13629550 Duplicates: 0 Warnings: 1

Warum diese Zeitunterschiede??

dann deine Befehle ausgeführt:
mysql> EXPLAIN
-> SELECT COUNT(*)
-> FROM tab2
-> LEFT JOIN tab1
-> ON a.x = a1.x
-> WHERE a.x IS NULL;
+----+-------------+-------+-------+---------------+---------+---------+--------------------+----------+--------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+--------------------+----------+--------------------------------------+
| 1 | SIMPLE | tab2 | index | NULL | x | 152 | NULL | 13629550 | Using index |
| 1 | SIMPLE | tab1 | ref | x | x | 152 | db.tab2.x | 10 | Using where; Using index; Not exists |
+----+-------------+-------+-------+---------------+---------+---------+--------------------+----------+--------------------------------------+
2 rows in set (0,03 sec)

mysql> SELECT COUNT(*)
-> FROM a1
-> LEFT JOIN a
-> ON a.Telefon = a1.Telefon
-> WHERE a.Telefon IS NULL;
+----------+
| COUNT(*) |
+----------+
| 643384 |
+----------+
1 row in set (24 min 59,76 sec)

mysql> show global variables LIKE '%buffer%';
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| bulk_insert_buffer_size | 8388608 |
| innodb_buffer_pool_instances | 1 |
| innodb_buffer_pool_size | 16777216 |
| innodb_change_buffering | all |
| innodb_log_buffer_size | 8388608 |
| join_buffer_size | 131072 |
| key_buffer_size | 16777216 |
| myisam_sort_buffer_size | 8388608 |
| net_buffer_length | 8192 |
| preload_buffer_size | 32768 |
| read_buffer_size | 262144 |
| read_rnd_buffer_size | 524288 |
| sort_buffer_size | 524288 |
| sql_buffer_result | OFF |
+------------------------------+----------+
14 rows in set (0,02 sec)

Nur zum Verständnis, warum left join und nicht right join?

Kannst Du mir erklären, was ich da gerade gemacht habe?

Danke
MikeXXL
Mit Zitat antworten
  #13  
Alt 30.04.2011, 15:10:19
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Tabellenvergleich performance

Zitat:
Zitat von mikexxl Beitrag anzeigen
mysql> SELECT COUNT(*)
-> FROM a1
-> LEFT JOIN a
-> ON a.Telefon = a1.Telefon
-> WHERE a.Telefon IS NULL;
+----------+
| COUNT(*) |
+----------+
| 643384 |
+----------+
1 row in set (24 min 59,76 sec)
Nur mal auf die schnelle dies, heute abend habe ich mehr Zeit.

a)

Zitat:
Zitat von mikexxl Beitrag anzeigen
mysql> show global variables LIKE '%buffer%';
| key_buffer_size | 16777216 |
Der key_buffer_size mit 16MB ist zu klein. Sie sollte so 25-30% des verfügbaren RAM sein. Bitte ändern. Anschließend ist ein restart der MySQL Engine notwendig.


b) Dies war ein Treffertest und ungefähre Abschätzung für den Abgleich und INSERT in die Zieletabelle. Der SQL könnte also so aussehen.

Code:
INSERT INTO  zieltabelle
SELECT * 
  FROM tab2
  LEFT JOIN tab1
    ON tab1.x = tab2.x
 WHERE tab1.x IS NULL;
Jetzt kannst Du ja mal eine INSERT/Abgleich Test machen. Die ZIEL Tabelle sollte noch keine INDEX haben. Diese erst anlegen, wenn der INSERT fertig ist. Dann geht das Ganze schneller.


c) LEFT or RIGHT JOIN

Hat ja nur was mit der Reihenfolge der Tabellen in der FROM Klausel zu tun.

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #14  
Alt 30.04.2011, 22:57:12
mikexxl mikexxl ist offline
Anfänger
 
Registriert seit: Apr 2011
Alter: 57
Beiträge: 10
AW: Tabellenvergleich performance

Hallo,
irgendetwas haut nicht hin.

wenn ich das eingebe
INSERT INTO zieltabelle
SELECT *
FROM tab2
LEFT JOIN tab1
ON tab1.x = tab2.x
WHERE tab1.x IS NULL;
bekomme ERROR 1136 (21S01): Column count doesn't match value count at row 1
tab1 hat 3 spalten, tab2 & ziel sind gleich, ziel hat kein index, kein key
was mach ich falsch?
nur zum verständnis, die 10er muss gegn die 3er abgeglichen werden. Welche nicht in der 3er vorhanden sind, müssen in die zieltabelle.
Danke
mikexxl
Mit Zitat antworten
  #15  
Alt 30.04.2011, 23:19:01
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Tabellenvergleich performance

Zitat:
Zitat von mikexxl Beitrag anzeigen
nur zum verständnis, die 10er muss gegn die 3er abgeglichen werden. Welche nicht in der 3er vorhanden sind, müssen in die zieltabelle.
Verstehe ich nicht 10er .. 3er ??


Zitat:
Zitat von mikexxl Beitrag anzeigen
bekomme ERROR 1136 (21S01): Column count doesn't match value count at row 1
Nun ja, mein Fehler. Die Zieltabelle muss identisch zur Tabelle tab2 sein. Dann sollte folgendes gehn. Es sollen nur die tab2 Spalten übertragen werden.

Code:
INSERT INTO  zieltabelle
SELECT tab2.* 
  FROM tab2
  LEFT JOIN tab1
    ON tab1.x = tab2.x
 WHERE tab1.x IS NULL;
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #16  
Alt 30.04.2011, 23:35:05
mikexxl mikexxl ist offline
Anfänger
 
Registriert seit: Apr 2011
Alter: 57
Beiträge: 10
AW: Tabellenvergleich performance

O.K, nujn meine hoffentlich letzte frage:
habe ja nun debian und LAMPP installiert.
wo kann ich den folgenden befehl ausführem?
mysqld_safe --key_buffer_size=1024M --sort_buffer_size=64M
im ordner root@debian:/opt/lampp/bin#
funktioniert der Befehl nicht
Danke
mikeXXL
Mit Zitat antworten
  #17  
Alt 01.05.2011, 13:32:06
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Tabellenvergleich performance

Zitat:
Zitat von mikexxl Beitrag anzeigen
O.K, nujn meine hoffentlich letzte frage:
habe ja nun debian und LAMPP installiert.
wo kann ich den folgenden befehl ausführem?
mysqld_safe --key_buffer_size=1024M --sort_buffer_size=64M
im ordner root@debian:/opt/lampp/bin#
Ob dies so geht.. keine Ahnung.

Die MySQL Parameter werden eigentlich in der my.ini / my.cfg in Abschnitt

Code:
[mysqld]
key_buffer_size=1024M
sort_buffer_size=1M
angepaßt. Oder temporär für die MySQL Connection in der Kommandozeile.

Code:
/* 1024 MB */
mysql>SET GLOBAL KEY_BUFFER_SIZE = 1024 * 1000 * 1024;

/* 1 MB reicht aus */
mysql>SET GLOBAL SORT_BUFFER_SIZE = 1 * 1000 * 1024;
Wie lange dauert der Abgleich jetzt?

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #18  
Alt 01.05.2011, 17:11:18
mikexxl mikexxl ist offline
Anfänger
 
Registriert seit: Apr 2011
Alter: 57
Beiträge: 10
AW: Tabellenvergleich performance

So, habe vor deinem posting die Parameter in der my.cfg geändert.

Dar abgleich dauerte nun TATAAA

Query OK, 643384 rows affected (25 min 29,33 sec)
Records: 643384 Duplicates: 0 Warnings: 0


super, danke

werde mir jetzt noch alles notieren, mache da ja nur einmal im Jahr.

Vielen Dank
MikeXXL
Mit Zitat antworten
Antwort

Stichworte
performance, tabelle, vergleich


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Performance bei function ? -=LUPO=- PHP für Fortgeschrittene und Experten 2 26.04.2007 13:25:18
mysql Performance Problem SELECT mit FORCE INDEX coller MySQLi/PDO/(MySQL) 0 19.04.2007 18:39:24
Performance: Konstanten, String Vars, Array crowl PHP Grundlagen 1 10.03.2004 15:22:53
performance frage RDJ PHP Grundlagen 8 04.03.2004 11:34:49
Anfragen, bzw. Antworten an einen Server ...Performance ??? RDJ Apache HTTP-Server 0 25.09.2003 17:41:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:19:49 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt