pomaly postgres a porovnanie s mysql
David Celjuska
dcsoft na dcsoft.sk
Sobota Březen 18 14:03:30 CET 2000
Zdarek All!
Dnes som si skusal postgres a nejaky sa mi zdal pomaly tak som
spravil pokus. Vytvoril som tabulku
articles takuto:
\connect - root
CREATE TABLE "article" (
"id" character varying(10) NOT NULL,
"obj_kod" character varying(10),
"popis" character varying(80),
"net_price" float4,
"our_price" float4,
"quantity" int2,
"group1" character varying(30) DEFAULT 'ine',
"group2" character varying(30) DEFAULT 'ine',
"pic1" character varying(15) DEFAULT 'noname.jpg',
"pic2" character varying(15) DEFAULT 'noname.jpg',
"alt1" character varying(10),
"alt2" character varying(10),
"zisk" int2);
REVOKE ALL on "article" from PUBLIC;
GRANT INSERT,UPDATE,DELETE,SELECT on "article" to GROUP "evid";
CREATE UNIQUE INDEX "article_pkey" on "article" using btree ( "id"
"varchar_ops" );
a napchal som do nej 100 tisic poloziek (riadkov) a prestne to iste som
spravil
s mysql struktura bola:
CREATE TABLE article (
id varchar(10) DEFAULT '' NOT NULL,
obj_kod varchar(10),
popis varchar(80),
net_price float(10,2),
our_price float(10,2),
quantity smallint(6),
group1 varchar(30) DEFAULT 'ine',
group2 varchar(30) DEFAULT 'ine',
pic1 varchar(15) DEFAULT 'noname.jpg',
pic2 varchar(15) DEFAULT 'noname.jpg',
alt1 varchar(10),
alt2 varchar(10),
zisk smallint(6),
PRIMARY KEY (id)
);
a tiez s 100 tisic polozkami.
Potom som zadal:
select id from article where id like '2%';
a vysledok bol zaujimavi:
mysql to vratilo za 3.34 sec
a postgres sa s tym hral 9.19 sec
Pred tym ako som tie prikazy zadal tak som restartol aj postgres
aj mysql aby som sa vyhol tomu, ze to budu mat nakesovane.
No a to vobec nechapem kde ma ten postgres problem to spravit
rychlejsie. ID je aj v mysql pouzite ako btree (ine index metody tusim
ani nepozna) a postgres ma tiez btree.
A nehovoriac o tom, ze ked som tie databazy plnil datami (s vlastnym
programom ras s mysql API a potom postgres API - algoritmus bol
rovnaky),
tak mysql som naplnil asi za 30 sec a postgres sa plnil vyse 10 minut.
Tak bud som ja sprosty alebo ten postgres je totalne na hovno.
Pre uplnost:
v mysql:
+---------+------+---------------+------+---------+------+--------+------------+
| table | type | possible_keys | key | key_len | ref | rows |
Extra |
+---------+------+---------------+------+---------+------+--------+------------+
| article | ALL | PRIMARY | NULL | NULL | NULL | 100000 |
where used |
+---------+------+---------------+------+---------+------+--------+------------+
1 row in set (0.07 sec)
v postgres: explain select id from article where id like '2%';
NOTICE: QUERY PLAN:
Index Scan using article_pkey on article (cost=1233.33 rows=1
width=120)
EXPLAIN
Mam pocit, ze cena(cost) u postgres-u je strasne vela.
S pozdravom,
davy!
Další informace o konferenci Linux