<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Tag mssql</title>
    <link>http://blog.zabiello.com/articles/tag/mssql</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>PostgreSQL vs MySQL vs MSSQL2K</title>
      <description>&lt;p&gt;Zawsze dziwi&#322;em si&#281; dlaczego aplikacje komunikuj&#261;ce si&#281; z &lt;span class="caps"&gt;MSSQL&lt;/span&gt; chodz&#261; tak niemrawo. Zrobi&#322;em sobie szybki test szybko&#347;ci. Na tym samym komputerze zainstalowa&#322;em: &lt;span class="caps"&gt;MSSQL 2000 SP4&lt;/span&gt;, MySQL 5.0.27 i PostgreSQL 8.2.3. Zadanie by&#322;o proste, pobra&#263; list&#281; tabel w bazie.&lt;/p&gt;


	&lt;p&gt;U&#380;yto nast&#281;puj&#261;cego kodu w Pythonie:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;import&lt;/span&gt; &lt;span class="ident"&gt;adodbapi&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="constant"&gt;MySQLdb&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;odbc&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;psycopg2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;time&lt;/span&gt;
&lt;span class="ident"&gt;conn&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;
  &lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;mysql&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="constant"&gt;MySQLdb&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;connect&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;user&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;root&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;'),&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;SHOW TABLES&lt;/span&gt;&lt;span class="punct"&gt;'),&lt;/span&gt;
  &lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;pgsql&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="ident"&gt;psycopg2&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;connect&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;user='postgres' password='test''&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;),&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;SELECT * FROM pg_tables jdb273&lt;/span&gt;&lt;span class="punct"&gt;'),&lt;/span&gt;
  &lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;mssql ado&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="ident"&gt;adodbapi&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;connect&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test&lt;/span&gt;&lt;span class="punct"&gt;'),&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;EXEC sp_tables&lt;/span&gt;&lt;span class="punct"&gt;'),&lt;/span&gt;
  &lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;mssql odbc&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="ident"&gt;odbc&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;odbc&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;DRIVER={SQL Server};SERVER=localhost;DATABASE=test;UID=sa;PWD=test&lt;/span&gt;&lt;span class="punct"&gt;'),&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;EXEC sp_tables&lt;/span&gt;&lt;span class="punct"&gt;'),&lt;/span&gt;
  &lt;span class="punct"&gt;]&lt;/span&gt;
&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;repeat&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;100&lt;/span&gt;&lt;span class="punct"&gt;):&lt;/span&gt;
  &lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;c&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="ident"&gt;conn&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;
    &lt;span class="ident"&gt;dbtype&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sql&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;c&lt;/span&gt;
    &lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="ident"&gt;dbtype&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;
    &lt;span class="ident"&gt;t&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
    &lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="ident"&gt;range&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;repeat&lt;/span&gt;&lt;span class="punct"&gt;):&lt;/span&gt;
      &lt;span class="ident"&gt;cursor&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;cursor&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
      &lt;span class="ident"&gt;cursor&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;execute&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;sql&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
      &lt;span class="ident"&gt;rows&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;cursor&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;fetchall&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
      &lt;span class="ident"&gt;cursor&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;close&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
    &lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;%d req/s&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;%&lt;/span&gt; &lt;span class="ident"&gt;round&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;repeat&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="ident"&gt;t&lt;/span&gt;&lt;span class="punct"&gt;))&lt;/span&gt;
&lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;__name__&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;__main__&lt;/span&gt;&lt;span class="punct"&gt;':&lt;/span&gt;
  &lt;span class="ident"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;U&#380;yta konfiguracja:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;WinXP Pro 2000 &lt;span class="caps"&gt;SP2&lt;/span&gt;, P4 3.2GHz, 1GB &lt;span class="caps"&gt;RAM&lt;/span&gt;.&lt;/li&gt;
		&lt;li&gt;Python 2.5&lt;/li&gt;
		&lt;li&gt;MySQL v5.0. 27, driver: MySQLdb v1.2.2&lt;/li&gt;
		&lt;li&gt;PostgreSQL v8.2.3, driver: psycopg2 v2.0.6b1 (dec dt ext pq3)&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;MSSQL 2000 SP4&lt;/span&gt;, driver: &lt;span class="caps"&gt;ADO&lt;/span&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Wyniki:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;C&lt;/span&gt;&lt;span class="punct"&gt;:\&lt;/span&gt;&lt;span class="ident"&gt;home\app\bench\scripts&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ident"&gt;bench_db&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;py&lt;/span&gt;
&lt;span class="ident"&gt;mysql&lt;/span&gt; &lt;span class="number"&gt;457&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;pgsql&lt;/span&gt; &lt;span class="number"&gt;581&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;ado&lt;/span&gt; &lt;span class="number"&gt;6&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;odbc&lt;/span&gt; &lt;span class="number"&gt;9&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;

&lt;span class="constant"&gt;C&lt;/span&gt;&lt;span class="punct"&gt;:\&lt;/span&gt;&lt;span class="ident"&gt;home\app\bench\scripts&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ident"&gt;bench_db&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;py&lt;/span&gt;
&lt;span class="ident"&gt;mysql&lt;/span&gt; &lt;span class="number"&gt;457&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;pgsql&lt;/span&gt; &lt;span class="number"&gt;581&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;ado&lt;/span&gt; &lt;span class="number"&gt;9&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;odbc&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;

&lt;span class="constant"&gt;C&lt;/span&gt;&lt;span class="punct"&gt;:\&lt;/span&gt;&lt;span class="ident"&gt;home\app\bench\scripts&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ident"&gt;bench_db&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;py&lt;/span&gt;
&lt;span class="ident"&gt;mysql&lt;/span&gt; &lt;span class="number"&gt;457&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;pgsql&lt;/span&gt; &lt;span class="number"&gt;578&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;ado&lt;/span&gt; &lt;span class="number"&gt;9&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;odbc&lt;/span&gt; &lt;span class="number"&gt;11&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;

&lt;span class="constant"&gt;C&lt;/span&gt;&lt;span class="punct"&gt;:\&lt;/span&gt;&lt;span class="ident"&gt;home\app\bench\scripts&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ident"&gt;bench_db&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;py&lt;/span&gt;
&lt;span class="ident"&gt;mysql&lt;/span&gt; &lt;span class="number"&gt;457&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;pgsql&lt;/span&gt; &lt;span class="number"&gt;581&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;ado&lt;/span&gt; &lt;span class="number"&gt;8&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;odbc&lt;/span&gt; &lt;span class="number"&gt;11&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;

&lt;span class="constant"&gt;C&lt;/span&gt;&lt;span class="punct"&gt;:\&lt;/span&gt;&lt;span class="ident"&gt;home\app\bench\scripts&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ident"&gt;bench_db&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;py&lt;/span&gt;
&lt;span class="ident"&gt;mysql&lt;/span&gt; &lt;span class="number"&gt;455&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;pgsql&lt;/span&gt; &lt;span class="number"&gt;641&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;ado&lt;/span&gt; &lt;span class="number"&gt;9&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;
&lt;span class="ident"&gt;mssql&lt;/span&gt; &lt;span class="ident"&gt;odbc&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt; &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;s&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Mit o rzekomej szybko&#347;ci MySQL ju&#380; jest nieaktualny. Nowy PostgreSQL 8 bije go pod ka&#380;dym wzgl&#281;dem. Zar&#243;wno wydajno&#347;ciowo i jak i znacznie wi&#281;kszymi mozliwo&#347;ciami (o tym mo&#380;e kiedy indziej).  Dziwi s&#322;aba, a raczej n&#281;dzna, wydajno&#347;&#263; produktu firmy Microsoft. Nie sprawdza&#322;em nowego &lt;span class="caps"&gt;MSSQL 2005&lt;/span&gt;, ale wszystko wskazuje na to, &#380;e przynajmniej &lt;span class="caps"&gt;MSSQL2K&lt;/span&gt; to kompletne dno!&lt;/p&gt;</description>
      <pubDate>Mon, 02 Apr 2007 17:14:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:43ae7c94-8984-4c09-86f1-fa0bf007d58c</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/04/02/postgresql-vs-mysql-vs-mssql2k</link>
      <category>mysql</category>
      <category>postgresql</category>
      <category>mssql</category>
      <category>benchmark</category>
    </item>
  </channel>
</rss>
