Re: FW: performance issue with a 2.5gb joinded table

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03.01.2013 15:30, Daniel Westermann wrote:
What additionally makes me wonder is, that the same table in oracle is taking much less space than in postgresql:

SQL>  select  sum(bytes) from dba_extents where segment_name = 'TEST1';
SUM(BYTES)
----------
1610612736

select pg_relation_size('mgmtt_own.test1');
pg_relation_size
------------------
        2502082560
(1 row)

(sysdba@[local]:7777) [bi_dwht]>  \d+ mgmtt_own.test1
                              Table "mgmtt_own.test1"
             Column            |     Type      | Modifiers | Storage | Description
------------------------------+---------------+-----------+---------+-------------
slsales_batch                | numeric(8,0)  |           | main    |
slsales_checksum             | numeric(8,0)  |           | main    |
slsales_reg_id               | numeric(8,0)  |           | main    |
slsales_prod_id              | numeric(8,0)  |           | main    |
slsales_date_id              | numeric(8,0)  |           | main    |
slsales_pos_id               | numeric(8,0)  |           | main    |
slsales_amt_sales_gross      | numeric(16,6) |           | main    |
slsales_amt_sales_discount   | numeric(16,6) |           | main    |
slsales_units_sales_gross    | numeric(8,0)  |           | main    |
slsales_amt_returns          | numeric(16,6) |           | main    |
slsales_amt_returns_discount | numeric(16,6) |           | main    |
slsales_units_returns        | numeric(8,0)  |           | main    |
slsales_amt_est_winnings     | numeric(16,6) |           | main    |
Indexes:
     "itest1" btree (slsales_date_id) CLUSTER, tablespace "mgmtt_idx"
     "itest2" btree (slsales_prod_id), tablespace "mgmtt_idx"
Has OIDs: no
Tablespace: "mgmtt_dat"

One difference is that numerics are stored more tightly packed on Oracle. Which is particularly good for Oracle as they don't have other numeric data types than number. On PostgreSQL, you'll want to use int4 for ID-fields, where possible. An int4 always takes up 4 bytes, while a numeric holding an integer value in the same range is typically 5-9 bytes.

- Heikki


--
Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux