Out of interest. Why is a UUID being stored as a varchar(64) and not as a uuid type ? Ny motivation is to makes tables much smaller and much faster to lookup a key if the key is of the correct data-type.
On Sun, 22 Dec 2024 at 03:38, James Pang <jamespang...@gmail.com> wrote: > Yes, we have primary key and another index that include bigint and uuid > that stored in database as varchar(64), many sessions inserting ... > values and at the same time, many sessions running the select query. > table size 13GB, primary is 6GB, the other index is 13GB too, the select > query use the 13GB index only scan. > in addition to this table and query, during the workload, we have > other two hot tables with similar bigint and uuid composite index, > inserting by many sessions and select in many sessions too, but the table > size is smaller, table 3790MB, index 1445MB. > when the workload started, database server cpu got increased very fast > and in tens of seconds, cpu is almost 100% used, and then > buffermapping LWLock started for these selects , even the inserts started > see buffermapping contention too. > attached please find top 1 table and sql details, another two tables and > it's query are similar. > > Thanks, > > James > > David Mullineux <dmu...@gmail.com> 於 2024年12月22日週日 上午12:41寫道: > >> Depends on a lot of thongs...Visibility map sounds like it's impacted >> here. Are your inserts towards the index (like a monotonically increasing >> serial id) or scattered around the index values ? How big is the table >> index and shared buffers ? An example would really help >> >> On Sat, 21 Dec 2024, 11:51 James Pang, <jamespang...@gmail.com> wrote: >> >>> Hi, >>> we have a simple select .... from table where ... (that mache the >>> index) , table has 80million rows. when many application sessions run the >>> query and at the same time some other sessions doing insert into ... this >>> table. from pg_stat_statements, shared_blks_hit show 31652 / per call. we >>> see very high cpu almost 100% cpu during application workload test, and >>> high LWLock BufferMapping waiting for these querys. But manually run the >>> sql show only 2148 shared_blks_hit/ per call. this is a simple sql, from >>> pg_profile we did see it use same index scan as manually running. What >>> could be possible reason leading so big difference with shared_blks_hit ? >>> PGv14.8 >>> >>> Thanks, >>> >>> James >>> >>