On 11/08/2003 09:59 Serge Dorofeev wrote:
> Hi PostrgeSQL team,
>
> My PostrgeSQL installed as part of CYGWIN (Windows XP).
> I have compared performance PostrgeSQL to MS SQL (I used a little Java
> program with number of inserts in table).
> MS SQL is faster in 12 times :-(
> It's very strange results.
> Guys who developed this server: what you can tell in this - what
> customizations needs to increase of productivity?
> How to force PostgreeSQL to work faster?
>
>
> Speed (inserts/sec) Elapsed time (ms)
> MS SQL (Average): 295 39 869
> testInsert 5000
> 263 18 977
> 255 19 619
> 306 16 334
>
> testInsert 10000
> 315 31 716
> 324 30 905
> 319 31 325
>
> testInsert 20000
> 241 82 919
> 313 63 922
> 317 63 101
>
> PostrgreSQL (Average): 24 520 160
> testInsert 5000
> 26 191 434
> 26 191 264
> 26 192 295
>
> testInsert 10000
> 22 463 669
> 25 393 510
> 24 409 528
>
> testInsert 20000
> 24 834 911
> 17 1 184 613
> 24 820 218
> MS SQL is faster (times): 12 13
You don't give any details about your test code or how the databases are
configured so I'm guessing that you're inserts use an autocommitting
connection. For PostgreSQL, this causes each insert to be run inside a
tranaction and the transaction is then immediately written to disk. My
guess is that MS SQL behaves differently and doesn't immediately write to
disk (faster maybe but could cause data corruption). Try modifying your
program to have connection.setAutoCommit(false) and do a
connection.commit() after say every 100 inserts.
HTH
--
Paul Thomas
+------------------------------+---------------------------------------------+
| Thomas Micro Systems Limited | Software Solutions for the Smaller
Business |
| Computer Consultants |
http://www.thomas-micro-systems-ltd.co.uk |
+------------------------------+---------------------------------------------+