> From: firebird-support@yahoogroups.com 
> [mailto:firebird-support@yahoogroups.com] 
> Sent: Thursday, September 28, 2017 7:35 PM
> To: firebird-support@yahoogroups.com
> Subject: Re: [firebird-support] Firebird performance vs PostgreSQL
>
>  
> Hi,
>
> without any sample you talking about nothing..
> Show some sample which can be reproduced.
> Without this i can say same Firebird is faster then Oracle and what someone 
> can say about this – nothing 
> 
> regards,
> Karol Bieniaszewski

Hello,

I am only providing details for above question. Not trying to say this is 
better or worse or anything.

- SQL statements to create necessary database tables can be found in attached 
*.SQL files.
- Followig link includes "insert into" statements which can be used for loading 
necessary data (around 100.000 records) on both FirebirdSQL and PostgreSQL 
databases.
http://s5.dosya.tc/server5/3dard7/insert_sql_statements.rar.html
- FirebirdSQL database should be created using WIN1254 character set.
- PostgreSQL database should be created as follows
For Linux:
CREATE DATABASE pgtest ENCODING 'UTF-8' LC_COLLATE 'tr_TR.UTF-8' TEMPLATE 
template0;
For Windows: 
CREATE DATABASE pgtest ENCODING 'UTF-8' LC_COLLATE 'tr-TR.UTF-8' TEMPLATE 
template0;
or
CREATE DATABASE pgtest ENCODING 'UTF8' LC_COLLATE 'Turkish_Turkey.1254' 
LC_CTYPE = 'Turkish_Turkey.1254' TEMPLATE template0;

- Query used on both database systems is as follows:
SELECT 
  RAPOR_EK.KAYNAK, 
  RAPOR_EK.SEBEP, 
  COALESCE(DT.IAIK_OG, 0) AS IAIK_OG,
  COALESCE(DT.IAIK_AG, 0) AS IAIK_AG,
  COALESCE(DT.IAIK_TOPLAM, 0) AS IAIK_TOPLAM,
  COALESCE(DT.IADK_OG, 0) AS IADK_OG,
  COALESCE(DT.IADK_AG, 0) AS IADK_AG,
  COALESCE(DT.IADK_TOPLAM, 0) AS IADK_TOPLAM,
  COALESCE(DT.GNLTOPLAM, 0) AS GNLTOPLAM
FROM RAPOR_EK
LEFT JOIN (
  SELECT 
    M.KAYNAGAGORE AS KAYNAK, 
    M.SEBEBEGORE AS SEBEP, 
    (sum(M.ES_IIOG)/(select sum(I.IIOG) from sabitler I where kaynak = 
'CİHANBEYLİ')*60) as IAIK_OG,
    (sum(M.ES_IIAG)/(select sum(I.IIAG) from sabitler I where kaynak = 
'CİHANBEYLİ')*60) as IAIK_AG,
    ((sum(M.ES_IIOG) + sum(M.ES_IIAG)) / ((select sum(I.IIOG) from sabitler I 
where kaynak = 'CİHANBEYLİ')  + (select sum(I.IIAG) from sabitler I where 
kaynak = 'CİHANBEYLİ'))*60) AS IAIK_TOPLAM,
    (sum(M.ES_IDOG)/(select sum(I.IDOG) from sabitler I where kaynak = 
'CİHANBEYLİ')*60) as IADK_OG,
    (sum(M.ES_IDAG)/(select sum(I.IDAG) from sabitler I where kaynak = 
'CİHANBEYLİ')*60) as IADK_AG,
    ((sum(M.ES_IDOG) + sum(M.ES_IDAG)) / ((select sum(I.IDOG) from sabitler I 
where kaynak = 'CİHANBEYLİ')  + (select sum(I.IDAG) from sabitler I where 
kaynak = 'CİHANBEYLİ'))*60) AS IADK_TOPLAM,
    ((sum(M.ES_IIOG) + sum(M.ES_IIAG) + (sum(M.ES_IDOG) + sum(M.ES_IDAG))) / 
((select sum(I.toplam) from sabitler I where kaynak = 'CİHANBEYLİ')*60)) AS 
GNLTOPLAM 
  FROM veri M
  WHERE 
    M.ILCE = 'CİHANBEYLİ'
    AND M.BILDIRIMEGORE = 'Bildirimsiz'
    AND M.SUREYEGORE = 'Uzun'
    AND (M.baslangic >= '2015-01-01' AND bitis <= '2015-01-31 23:59:59.999')
  GROUP BY 
    M.KAYNAGAGORE,
    M.SEBEBEGORE
) DT USING (KAYNAK, SEBEP)
ORDER BY KAYNAK, SEBEP;

- Query plan for both databases can be found in attached *.TXT files.

- My configuration i7-4720HQ cpu, 8GB RAM, Windows 10 64bit, 512GB Sandisk 
Extreme Pro SSD 6GB capability on 6GB connection.
- PostgreSQL version 9.6.4 64bit (installed using Enterprise DB binaries)
- FirebirdSQL version 3.0.1.32609 64bit (official installation) 
- Both database servers have default configuration files. Nothing changed, or 
tweaked.
- I read following figures for above SQL statement execution on a freshly 
created database, freshly loaded data
=> FirebirdSQL using flamerobin.exe to execute (I failed to find a way to 
execute an SQL file with stats on using isql.exe): 1.505 seconds after computer 
reboot, 1.379 seconds for 2nd, 1.381 seconds for 3rd.
=> PostgreSQL using psql.exe to execute: 0.252 seconds after computer reboot, 
0.029 seconds on 2nd, 0.024 seconds on 3rd

You may have additional questions, I try my best to answer within my knowledge.

Regards,
Ertan Küçükoğlu


  ----------

Field #01: RAPOR_EK.KAYNAK Alias:KAYNAK Type:STRING(20)
Field #02: RAPOR_EK.SEBEP Alias:SEBEP Type:STRING(20)
Field #03: .COALESCE Alias:IAIK_OG Type:NUMERIC(18,2)
Field #04: .COALESCE Alias:IAIK_AG Type:NUMERIC(18,2)
Field #05: .COALESCE Alias:IAIK_TOPLAM Type:NUMERIC(18,2)
Field #06: .COALESCE Alias:IADK_OG Type:NUMERIC(18,2)
Field #07: .COALESCE Alias:IADK_AG Type:NUMERIC(18,2)
Field #08: .COALESCE Alias:IADK_TOPLAM Type:NUMERIC(18,2)
Field #09: .COALESCE Alias:GNLTOPLAM Type:NUMERIC(18,2)
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN (DT I INDEX (RDB$PRIMARY2))
PLAN JOIN (RAPOR_EK ORDER rapor_ek_pkey, SORT (DT M NATURAL))
  ----------

Merge Left Join  (cost=6600.19..6610.98 rows=560 width=340)
  Merge Cond: (((rapor_ek.kaynak)::text = (m.kaynagagore)::text) AND 
((rapor_ek.sebep)::text = (m.sebebegore)::text))
  ->  Sort  (cost=41.16..42.56 rows=560 width=116)
        Sort Key: rapor_ek.kaynak, rapor_ek.sebep
        ->  Seq Scan on rapor_ek  (cost=0.00..15.60 rows=560 width=116)
  ->  Materialize  (cost=6559.03..6565.45 rows=31 width=256)
        ->  GroupAggregate  (cost=6559.03..6565.06 rows=31 width=256)
              Group Key: m.kaynagagore, m.sebebegore
              InitPlan 1 (returns $0)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 2 (returns $1)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_1  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 3 (returns $2)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_2  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 4 (returns $3)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_3  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 5 (returns $4)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_4  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 6 (returns $5)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_5  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 7 (returns $6)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_6  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 8 (returns $7)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_7  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              InitPlan 9 (returns $8)
                ->  Aggregate  (cost=2.43..2.44 rows=1 width=8)
                      ->  Seq Scan on sabitler i_8  (cost=0.00..2.42 rows=1 
width=4)
                            Filter: ((kaynak)::text = 'CİHANBEYLİ'::text)
              ->  Sort  (cost=6537.09..6537.27 rows=70 width=46)
                    Sort Key: m.kaynagagore, m.sebebegore
                    ->  Seq Scan on veri m  (cost=0.00..6534.94 rows=70 
width=46)
                          Filter: ((baslangic >= '2015-01-01 
00:00:00'::timestamp without time zone) AND (bitis <= '2015-01-31 
23:59:59.999'::timestamp without time zone) AND ((ilce)::text = 
'CİHANBEYLİ'::text) AND ((bildirimegore)::text = 'Bildirimsiz'::text) AND 
((sureyegore)::text = 'Uzun'::text))

[Non-text portions of this message have been removed]

  • [firebi... zilez2...@yahoo.com [firebird-support]
    • Re... 'livius' liviusliv...@poczta.onet.pl [firebird-support]
      • ... Ertan Küçükoğlu ertan.kucuko...@1nar.com.tr [firebird-support]
        • ... Ertan Küçükoğlu ertan.kucuko...@1nar.com.tr [firebird-support]
        • ... Dmitry Yemanov dim...@users.sourceforge.net [firebird-support]
          • ... Ertan Küçükoğlu ertan.kucuko...@1nar.com.tr [firebird-support]
            • ... Dmitry Yemanov dim...@users.sourceforge.net [firebird-support]
      • ... zilez2...@yahoo.com [firebird-support]
        • ... trsk...@yahoo.com [firebird-support]

Reply via email to