[python] praca s textom

superman feed na centrum.cz
Pondělí Červen 23 03:00:32 CEST 2008


Jasně, že nové mysqli rozhraní to umí, ale mysql ne a nikdy to neumělo. 
Navíc prepared statement neuměla ani MySQL vůbec, to nebyl problém jenom 
rozhraní. MySQL je v podstatě hloupoučká "databáze", na kterou v 
poslední době bylo nalepeno zdání některých featur skutečné databáze, a 
prepared statement je jedna z věcí, kterou MySQL moc dlouho nezná, ještě 
se to se to na MySQL leskne novotou. Tudíž MySQL neměla pro prepared 
statement ani API, ani s nimi server/client protokol nepočítal.

To co různá high level db API nabízela pro MySQL jako "prepared 
statement" nebylo nic jiného, než že se počkalo na parametry, složil se 
z SQL dosazením za otazníky parametry a do MySQL se poslal skutečný dotaz.

Vezměte laskavě v úvahu, že naprostou většinu své existence MySQL 
neuměla ani prepared statement, ani transakce, ba ani referenční 
integritu, nebo znakové sady řetězců. Všechno je to relativně záležitost 
posledních let, a že to je spíše nalepovák, než integrální součást, to 
si pište. A výkon tomuto nalepovacímu stylu přesně odpovídá.

Ale zpět: Nebál bych se toho, že by prepared statement zhoršoval výkon 
databáze, to je naprostý nesmysl. A pokud ano, tak se jedná v nejhorším 
katastrofickém případě asi tak o 0,0001% zpomalení, tudíž zcela 
zanedbatelné a věnoval bych se jiným článkům řetězu v databázi, které 
mají rozhodně významný vliv.

Jinak pro jistotu: Nemám nic proti MySQL (a pokud ano, tak pouze stran 
její licence, a její předraženosti, který naprosto neodpovídá užitné 
hodnotě poměru cena/kvalita). Má své místo, ale pro představu, nedávno 
mě napadlo vytvořit identickou databázi s identickou datovou strukturou 
nad MySQL a nad Sybase ASA. Sybase ASA, což je na rozdíl od MySQL 
skutečná profesionální databáze zhruba se systémovými nároky a požadavky 
rovnající se MySQL - byla běžně 10x rychlejší v databázových operacích, 
než MySQL. A to ještě Sybase ASA není nic moc v databázovém světě.

Miloslav Ponkrác

Jan Kundrát napsal(a):
> superman wrote:
>> Jinak odpověď je to také otázkou zvyku. MySQL velmi dlouho prepared 
>> statement vůbec nepodporovala, a mysql rozhraní v PHP je dokonce 
>> vůbec nepodporuje ani dnes, prostě je vůbec nejde zapsat, není na to 
>> API. 
>
> Vypada to, ze minimalne "nove mysql api" (mysqli) to umi, viz napr. 
> http://cz.php.net/manual/en/mysqli-stmt.bind-param.php
>
> Blesmrt,
> -jkt
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python



Další informace o konferenci Python