Re: Scaling 10 million records in PostgreSQL table

From: Navaneethan R <nava(at)gridlex(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Scaling 10 million records in PostgreSQL table
Date: 2012-10-08 20:25:02
Message-ID: 2f21a136-2fc1-4efa-a842-0fea0cf5a11e@googlegroups.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Tuesday, October 9, 2012 1:40:08 AM UTC+5:30, Steve Crawford wrote:
> On 10/08/2012 08:26 AM, Navaneethan R wrote:
>
> > Hi all,
>
> >
>
> > I have 10 million records in my postgres table.I am running the database in amazon ec2 medium instance. I need to access the last week data from the table.
>
> > It takes huge time to process the simple query.So, i throws time out exception error.
>
> >
>
> > query is :
>
> > select count(*) from dealer_vehicle_details where modified_on between '2012-10-01' and '2012-10-08' and dealer_id=270001;
>
> >
>
> > After a lot of time it responds 1184 as count
>
> >
>
> > what are the ways i have to follow to increase the performance of this query?
>
> >
>
> > The insertion also going parallel since the daily realtime updation.
>
> >
>
> > what could be the reason exactly for this lacking performace?
>
> >
>
> >
>
> What version of PostgreSQL? You can use "select version();" and note
>
> that 9.2 has index-only scans which can result in a substantial
>
> performance boost for queries of this type.
>
>
>
> What is the structure of your table? You can use "\d+
>
> dealer_vehicle_details" in psql.
>
>
>
> Have you tuned PostgreSQL in any way? If so, what?
>
>
>
> Cheers,
>
> Steve
>
>
>
>
>
> --
>
> Sent via pgsql-performance mailing list (pgsql-performance(at)postgresql(dot)org)
>
> To make changes to your subscription:
>
> http://www.postgresql.org/mailpref/pgsql-performance

version():

PostgreSQL 8.4.8 on i686-pc-linux-gnu, compiled by GCC gcc-4.5.real (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2, 32-bit

Desc:
Table "public.dealer_vehicle_details"
Column | Type | Modifiers | Storage | Description
----------------+--------------------------+-------------------------------------------------------------------------+---------+-------------
id | integer | not null default nextval('dealer_vehicle_details_new_id_seq'::regclass) | plain |
vin_id | integer | not null | plain |
vin_details_id | integer | | plain |
price | integer | | plain |
mileage | double precision | | plain |
dealer_id | integer | not null | plain |
created_on | timestamp with time zone | not null | plain |
modified_on | timestamp with time zone | not null | plain |
Indexes:
"dealer_vehicle_details_pkey" PRIMARY KEY, btree (id)
"idx_dealer_sites_id" UNIQUE, btree (id) WHERE dealer_id = 270001
"idx_dealer_sites_id_526889" UNIQUE, btree (id) WHERE dealer_id = 526889
"idx_dealer_sites_id_9765" UNIQUE, btree (id, vin_id) WHERE dealer_id = 9765
"idx_dealer_sites_id_9765_all" UNIQUE, btree (id, vin_id, price, mileage, modified_on, created_on, vin_details_id) WHERE dealer_id = 9765
"mileage_idx" btree (mileage)
"price_idx" btree (price)
"vehiclecre_idx" btree (created_on)
"vehicleid_idx" btree (id)
"vehiclemod_idx" btree (modified_on)
"vin_details_id_idx" btree (vin_details_id)
"vin_id_idx" btree (vin_id)
Foreign-key constraints:
"dealer_vehicle_master_dealer_id_fkey" FOREIGN KEY (dealer_id) REFERENCES dealer_dealer_master(id) DEFERRABLE INITIALLY DEFERRED
"dealer_vehicle_master_vehicle_id_fkey" FOREIGN KEY (vin_id) REFERENCES dealer_vehicle(id) DEFERRABLE INITIALLY DEFERRED
"dealer_vehicle_master_vin_details_id_fkey" FOREIGN KEY (vin_details_id) REFERENCES vin_lookup_table(id) DEFERRABLE INITIALLY DEFERRED
Has OIDs: no

After created the index for WHERE clause "WHERE dealer_id = 270001"..It is performing better.I have more dealer ids Should I do it for each dealer_id?

And The insertion service also happening background parallel.

So, What are the important steps I should follow frequently to keep the database healthy?

Since, the insertion is happening all time..It would reach millions of millions soon.What are precautions should be followed?

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Craig Ringer 2012-10-08 20:27:45 Re: Scaling 10 million records in PostgreSQL table
Previous Message Steve Crawford 2012-10-08 20:09:59 Re: Scaling 10 million records in PostgreSQL table