Обсуждение: Sometime Update is not modifying data inside database.

Поиск
Список
Период
Сортировка

Sometime Update is not modifying data inside database.

От
Amit Kumar
Дата:
All,

I am facing a weired issue in PG 9.0.3. Sometime via application UPDATES are not changing data in the database but in postgres logs its also not raising any error.  It is happening 2-3 times in a week. I have tried but not able to reproduce this error. fsync is ON.  We are not using hibernate and no pg pool or any other tool inside database.   The  application running from last 4-5 year but from last few days we are experiencing some times UPDATE is not updating records in database, without giving any error.  No changes has been made in database or server recently.

UPDATE dbpush_camp_main SET status=7 WHERE camp_id IN(137721)

Below is the logs of database.

<snip>
Jul 30 12:40:36 dell16 postgres[11088]: [11-1] 2012-07-30 12:40:36 IST [11088]: [10-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:  statement: START TRANSACTION
Jul 30 12:40:36 dell16 postgres[11088]: [12-1] 2012-07-30 12:40:36 IST [11088]: [11-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:  statement: UPDATE dbpush_camp_main SET status=7 WHERE camp_id IN(137721)
Jul 30 12:40:36 dell16 postgres[11088]: [13-1] 2012-07-30 12:40:36 IST [11088]: [12-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:  statement: COMMIT
Jul 30 12:40:36 dell16 postgres[9368]: [5-1] 2012-07-30 12:40:36 IST [9368]: [4-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43187)LOG:  statement: SELECT status FROM  dbpush_camp_main  WHERE camp_id=137721
</snip>

The size of database is 237GB, AND dbpush_camp_main  table size is 37MB with 36888 records and one primary key. status is a integer field.

Please share your thoughts.  Thanks a lot in Advance !!


--
--With Best Regards
Amit Jain
#9833777592


"The best reason for having dreams is that in dreams no reasons are necessary"

Re: Sometime Update is not modifying data inside database.

От
Tom Lane
Дата:
Amit Kumar <helloamit5@gmail.com> writes:
> <snip>
> Jul 30 12:40:36 dell16 postgres[11088]: [11-1] 2012-07-30 12:40:36 IST
> [11088]: [10-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:
> statement: START TRANSACTION
> Jul 30 12:40:36 dell16 postgres[11088]: [12-1] 2012-07-30 12:40:36 IST
> [11088]: [11-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:
> statement: *UPDATE dbpush_camp_main SET status=7 WHERE camp_id IN(137721)*
> Jul 30 12:40:36 dell16 postgres[11088]: [13-1] 2012-07-30 12:40:36 IST
> [11088]: [12-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:
> statement: COMMIT
> Jul 30 12:40:36 dell16 postgres[9368]: [5-1] 2012-07-30 12:40:36 IST
> [9368]: [4-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43187)LOG:
> statement: SELECT status FROM  dbpush_camp_main  WHERE camp_id=137721
> </snip>

I assume what you're complaining about is that PID 9368's select didn't
see the result of pid 11088's update?  The above trace doesn't prove
that anything is wrong.  That behavior would be expected if 9368 had
taken its "snapshot" before 11088's commit finished, and you can't
really tell if that was the case or not from these log entries.  But
given they all happened in less than 1 second, it's certainly possible.

            regards, tom lane

Re: Sometime Update is not modifying data inside database.

От
Craig James
Дата:


On Mon, Jul 30, 2012 at 4:06 AM, Amit Kumar <helloamit5@gmail.com> wrote:
All,

I am facing a weired issue in PG 9.0.3. Sometime via application UPDATES are not changing data in the database but in postgres logs its also not raising any error.  It is happening 2-3 times in a week. I have tried but not able to reproduce this error. fsync is ON.  We are not using hibernate and no pg pool or any other tool inside database.   The  application running from last 4-5 year but from last few days we are experiencing some times UPDATE is not updating records in database, without giving any error.  No changes has been made in database or server recently.

UPDATE dbpush_camp_main SET status=7 WHERE camp_id IN(137721)

Below is the logs of database.

<snip>
Jul 30 12:40:36 dell16 postgres[11088]: [11-1] 2012-07-30 12:40:36 IST [11088]: [10-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:  statement: START TRANSACTION
Jul 30 12:40:36 dell16 postgres[11088]: [12-1] 2012-07-30 12:40:36 IST [11088]: [11-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:  statement: UPDATE dbpush_camp_main SET status=7 WHERE camp_id IN(137721)
Jul 30 12:40:36 dell16 postgres[11088]: [13-1] 2012-07-30 12:40:36 IST [11088]: [12-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43225)LOG:  statement: COMMIT
Jul 30 12:40:36 dell16 postgres[9368]: [5-1] 2012-07-30 12:40:36 IST [9368]: [4-1] user=postgres,db=dbpush xxxxxxxxxxxxxxxxxx(43187)LOG:  statement: SELECT status FROM  dbpush_camp_main  WHERE camp_id=137721
</snip>

The size of database is 237GB, AND dbpush_camp_main  table size is 37MB with 36888 records and one primary key. status is a integer field.

Please share your thoughts.  Thanks a lot in Advance !!

You've almost certainly got problems with overlapping transactions, where the process making the change and the process testing the change are looking at different "snapshots" of the data.  The "snapshot" started when each one started its own transaction.

Craig