Schrift
[thread]3421[/thread]

join & dbh->quote() (Seite 2)



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
format_c
 2004-03-19 21:43
#31849 #31849
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Mach ich.
Hast du irgendwelche wünsche wie die Tabelle ausseehen soll, wieviel drin stehen soll, wie die Abfrage aussehen soll?

Gruß Alex
Strat
 2004-03-19 21:49
#31850 #31850
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
moeglichst viel ;-)

nein, mich wuerde nur interessieren, ob das auch bei mysql einen leistungsgewinn bringt oder nicht
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
format_c
 2004-03-20 21:12
#31851 #31851
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Tabelle:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> DESCRIBE testobject;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(10) | | PRI | NULL | auto_increment |
| col1 | int(64) | YES | | NULL | |
| col2 | varchar(64) | YES | | NULL | |
| col3 | varchar(128) | YES | | NULL | |
| col4 | text | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
5 rows in set (0.10 sec)

mysql>


Mit Daten füllen
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my $host = 'server.lan.de';
my $database = 'benchmark_test';
my $user = 'benchmarker';
my $passwd = 'tester';

my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host;",$user,$passwd,{PrintError => 1, RaiseError => 1})
or die DBI::errstr;


my $sql = qq|
INSERT INTO testobject (col1,col2,col3,col4)
VALUES (
'127402341236478152304123840912364891263410234',
'lasdjfhoyxcv,asiwezrfbc,y<xfuzaweold<',
'asdlfkjhasldr8ahkjcvn yxlkurfhoiaeywuhcvnjkxnvliawuerzhdaiouwbcf<jasb c.k<asdhnfliawehfcvjk<nscdlöiauwehfv <',
'alsduzcnfhasldncrnhfasdklhcfalshrflauisec filbnsdlfkanacs f
alsducfhnalusehrnliuwhva nluise fhliudsncfhlaeuifhev uihfva enwfvad
acnselriu iuehrncao93zr89a nfdksjfhna lhd9f8a3znc chsildahsdf va
apsedzncf aszndhflah nsdfoahef kjahöahwüäruq 3hrf asdasdfn batweintr löwezt ösodihf vawe'
)
|;

for (0..100_000) {
print "Do $_ \n";
$dbh->do($sql) or die DBI::errstr;
}


exit;


Benchmark:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Benchmark;

my $host = 'server.lan.de';
my $database = 'benchmark_test';
my $user = 'benchmarker';
my $passwd = 'tester';

timethese(5,
{
'Test mit Platzhaltern' => \&test_without,
'Test ohne Platzhalter' => \&test_with
}
);

sub test_without {
my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host;",$user,$passwd,{PrintError => 1, RaiseError => 1})
or die DBI::errstr;
my $sql = qq|
SELECT * FROM testobject WHERE col2 = 'lasdjfhoyxcv,asiwezrfbc,y<xfuzaweold<'
|;
my $sth = $dbh->prepare( $sql ) or die DBI::errstr;
for (0 .. 30) {
$sth->execute() or die DBI::errstr;
#print "Without: $_ \n";
}
$sth->finish();
$dbh->disconnect();

}

sub test_with {
my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host;",$user,$passwd,{PrintError => 1, RaiseError => 1})
or die DBI::errstr;
my $sql = qq|
SELECT * FROM testobject WHERE col2 = ?
|;
my $sth = $dbh->prepare( $sql ) or die DBI::errstr;
for (0 .. 30) {
$sth->execute('lasdjfhoyxcv,asiwezrfbc,y<xfuzaweold<') or die DBI::errstr;
#print "With $_ \n";
}
$sth->finish();
$dbh->disconnect()
}

Benchmarkergebnis
Code: (dl )
1
2
3
4
5
format_c@linux:~/workspace/mysql_benchmark> perl benchmark.pl 
Benchmark: timing 5 iterations of Test mit Platzhaltern, Test ohne Platzhalter...
Test mit Platzhaltern: 1889 wallclock secs (1226.64 usr + 312.65 sys = 1539.29 CPU) @ 0.00/s (n=5)
Test ohne Platzhalter: 2001 wallclock secs (1225.97 usr + 314.94 sys = 1540.91 CPU) @ 0.00/s (n=5)
format_c@linux:~/workspace/mysql_benchmark>


Ich hoffe meine Testkriterien waren nicht all zu schwachsinnig.

Gruß Alex
Edit: Hoppla Hab einen Dreher drin. mit sind ohne und ohne sind mit\n\n

<!--EDIT|format_c|1079810468-->
ptk
 2004-03-22 14:08
#31852 #31852
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Dein Benchmark ist unfair gegenueber den Platzhaltern. Um einen sinnvollen Vergleich zu machen, muesste man bei test_without das prepare innerhalb der for-Schleife verschieben --- mehrere SELECTs oder INSERTs mit den gleichen Parametern sind ja nicht sinnvoll.
format_c
 2004-03-23 00:39
#31853 #31853
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Kannst du mir mal einen sinnvollen Code geben. Dann lasse ich ihn gern noch mal drüber laufen.

Gruß Alex
ptk
 2004-03-23 17:55
#31854 #31854
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du muesstest bei test_without die $sql- und $sth-Zuweisung *innerhalb* der for-Schleife machen.
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2004-03-19 09:00.