-
Incident report
-
Resolution: Fixed
-
Major
-
1.8.11
-
Linux 2.6.32-5-amd64 #1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64 GNU/Linux
Postgresql 9.0 - Raid 10 HDDs - 8GB ram
Hi,
I dunno where to write about this so I'll try here.
I noticed that often our zabbix server loads being stuck on queries like this one:
select value from history where itemid=23719 and clock<=1334581521 order by itemid,clock desc limit 1
It seems, if i'm not wrong, that this query is used by the item.last trigger (to get the last value of an item) Could also be used by item.delta (with limit 2 instead of 1), etc...
The thing is that our history table is partitionned with constraints so we can disable housekeeper which is a resource eater on large dbs and like this we can keep a nice amount of history without too much perfs drop.
But sometimes such queries takes more than 5 minutes to complete, because clock<=xxxxxxxxx makes postgresql browse all the table partitions and render the partitionning quite useless.
if you replace that kind of query with (specifying a time range)
select value from history where itemid=23719 and clock<=1334581521 and clock >=1334580521 order by itemid,clock desc limit 1
it will be lightning fast at it will only read the patition table concerned by this time range.
Wouldn't be an idea to modify those queries so they use a time range to drastically improve the perfs for the people using partitons or
maybe not use less or equal but greater or equal for the clock ?? I must admit I don't get it why the query is built like this.
If you're getting the last value usually it should younger than "current time minus the configured item check interval"...
Help please ![]()
Here you'll find EXPLAINs for both queries :
select value from history where itemid=23719 and clock<=1334581521 and clock >=1334580521 (takes ages to complete)
QUERY PLAN
------------------------------------------------------------------------------------------------------------------
Limit (cost=735231.66..735231.66 rows=1 width=25)
-> Sort (cost=735231.66..735931.35 rows=279878 width=25)
Sort Key: public.history.clock
-> Result (cost=0.00..733832.27 rows=279878 width=25)
-> Append (cost=0.00..733832.27 rows=279878 width=25)
-> Seq Scan on history (cost=0.00..0.00 rows=1 width=28)
Filter: ((clock <= 1334581521) AND (itemid = 23719))
-> Bitmap Heap Scan on history_20120321 history (cost=152.26..11222.49 rows=3759 width=20)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120321_1 (cost=0.00..151.32 rows=3759 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120320 history (cost=132.48..10173.12 rows=3407 width=20)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120320_1 (cost=0.00..131.63 rows=3407 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120301 history (cost=351.31..21969.12 rows=9125 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120301_1 (cost=0.00..349.03 rows=9125 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120302 history (cost=351.33..21974.20 rows=9127 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120302_1 (cost=0.00..349.05 rows=9127 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120303 history (cost=351.26..21958.50 rows=9120 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120303_1 (cost=0.00..348.98 rows=9120 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120304 history (cost=351.35..21977.17 rows=9128 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120304_1 (cost=0.00..349.06 rows=9128 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120305 history (cost=351.26..21958.50 rows=9120 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120305_1 (cost=0.00..348.98 rows=9120 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120306 history (cost=350.73..21836.59 rows=9069 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120306_1 (cost=0.00..348.46 rows=9069 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120307 history (cost=351.51..22014.24 rows=9144 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120307_1 (cost=0.00..349.23 rows=9144 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120308 history (cost=355.88..22103.22 rows=9179 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120308_1 (cost=0.00..353.58 rows=9179 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120309 history (cost=351.14..21929.37 rows=9108 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120309_1 (cost=0.00..348.86 rows=9108 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120310 history (cost=344.96..21428.49 rows=8899 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120310_1 (cost=0.00..342.74 rows=8899 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120311 history (cost=340.30..21273.45 rows=8836 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120311_1 (cost=0.00..338.09 rows=8836 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120312 history (cost=350.57..21801.49 rows=9054 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120312_1 (cost=0.00..348.31 rows=9054 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120313 history (cost=350.03..21676.76 rows=9002 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120313_1 (cost=0.00..347.78 rows=9002 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120314 history (cost=346.00..21665.42 rows=8999 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120314_1 (cost=0.00..343.75 rows=8999 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120315 history (cost=350.66..21820.31 rows=9062 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120315_1 (cost=0.00..348.39 rows=9062 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120316 history (cost=355.78..22079.92 rows=9170 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120316_1 (cost=0.00..353.49 rows=9170 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120317 history (cost=351.47..22006.01 rows=9140 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120317_1 (cost=0.00..349.19 rows=9140 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120318 history (cost=339.93..21188.30 rows=8800 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120318_1 (cost=0.00..337.73 rows=8800 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120319 history (cost=339.80..21159.03 rows=8788 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120319_1 (cost=0.00..337.61 rows=8788 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120322 history (cost=153.02..11443.90 rows=3830 width=20)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120322_1 (cost=0.00..152.06 rows=3830 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120323 history (cost=152.92..11431.14 rows=3819 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120323_1 (cost=0.00..151.96 rows=3819 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120324 history (cost=153.04..11460.62 rows=3831 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120324_1 (cost=0.00..152.08 rows=3831 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120325 history (cost=147.08..10926.57 rows=3646 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120325_1 (cost=0.00..146.17 rows=3646 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120326 history (cost=153.01..11453.16 rows=3828 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120326_1 (cost=0.00..152.05 rows=3828 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120327 history (cost=153.40..11547.90 rows=3866 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120327_1 (cost=0.00..152.44 rows=3866 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120328 history (cost=152.99..11444.28 rows=3826 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120328_1 (cost=0.00..152.03 rows=3826 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120329 history (cost=153.37..11532.73 rows=3863 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120329_1 (cost=0.00..152.40 rows=3863 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120330 history (cost=152.87..11420.21 rows=3814 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120330_1 (cost=0.00..151.92 rows=3814 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120331 history (cost=152.38..11295.92 rows=3767 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120331_1 (cost=0.00..151.44 rows=3767 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120401 history (cost=152.77..11401.47 rows=3804 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120401_1 (cost=0.00..151.82 rows=3804 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120402 history (cost=152.57..11350.62 rows=3785 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120402_1 (cost=0.00..151.63 rows=3785 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120403 history (cost=152.87..11409.86 rows=3815 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120403_1 (cost=0.00..151.92 rows=3815 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120404 history (cost=152.68..11377.87 rows=3796 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120404_1 (cost=0.00..151.74 rows=3796 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120405 history (cost=152.85..11418.48 rows=3812 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120405_1 (cost=0.00..151.90 rows=3812 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120406 history (cost=148.17..11255.88 rows=3746 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120406_1 (cost=0.00..147.24 rows=3746 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120407 history (cost=152.40..11313.51 rows=3768 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120407_1 (cost=0.00..151.46 rows=3768 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120408 history (cost=152.36..11303.00 rows=3764 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120408_1 (cost=0.00..151.42 rows=3764 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120409 history (cost=152.87..11420.30 rows=3814 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120409_1 (cost=0.00..151.92 rows=3814 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120410 history (cost=152.32..11292.28 rows=3760 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120410_1 (cost=0.00..151.38 rows=3760 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120411 history (cost=152.27..11282.03 rows=3755 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120411_1 (cost=0.00..151.33 rows=3755 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120412 history (cost=152.94..11441.59 rows=3821 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120412_1 (cost=0.00..151.99 rows=3821 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120413 history (cost=152.33..11295.74 rows=3761 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120413_1 (cost=0.00..151.39 rows=3761 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120414 history (cost=148.17..11254.87 rows=3746 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120414_1 (cost=0.00..147.24 rows=3746 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120415 history (cost=152.29..11284.67 rows=3757 width=19)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120415_1 (cost=0.00..151.35 rows=3757 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Heap Scan on history_20120416 history (cost=231.24..14557.94 rows=6047 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521))
-> Bitmap Index Scan on history_20120416_1 (cost=0.00..229.73 rows=6047 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521))
(195 rows)
select value from history where itemid=23719 and clock<=1334581521 and clock >=1334580521 order by itemid,clock desc limit 1 (ultra fast)
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------
Limit (cost=356.30..356.30 rows=1 width=28)
-> Sort (cost=356.30..356.53 rows=92 width=28)
Sort Key: public.history.clock
-> Result (cost=0.00..355.84 rows=92 width=28)
-> Append (cost=0.00..355.84 rows=92 width=28)
-> Seq Scan on history (cost=0.00..0.00 rows=1 width=28)
Filter: ((clock <= 1334581521) AND (clock >= 1334580521) AND (itemid = 23719))
-> Bitmap Heap Scan on history_20120416 history (cost=6.42..355.84 rows=91 width=28)
Recheck Cond: ((itemid = 23719) AND (clock <= 1334581521) AND (clock >= 1334580521))
-> Bitmap Index Scan on history_20120416_1 (cost=0.00..6.39 rows=91 width=0)
Index Cond: ((itemid = 23719) AND (clock <= 1334581521) AND (clock >= 1334580521))
(11 rows)
Kind regards,
Sébastien