Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kcXCP-0003Of-Cw for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Nov 2020 17:12:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kcXCO-0002wM-Af for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Nov 2020 17:12:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kcXCO-0002wF-3z for pgsql-hackers@lists.postgresql.org; Tue, 10 Nov 2020 17:12:52 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kcXCL-0001Uj-J2 for pgsql-hackers@lists.postgresql.org; Tue, 10 Nov 2020 17:12:51 +0000 Received: from hnk.local (p1295030-ipngn4902funabasi.chiba.ocn.ne.jp [153.166.85.30]) by oss.nttdata.com (Postfix) with ESMTPSA id 229C2623A9; Wed, 11 Nov 2020 02:12:45 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com Subject: Re: [PATCH] Add features to pg_stat_statements To: Seino Yuki Cc: pgsql-hackers@lists.postgresql.org References: <0d9f1107772cf5c3f954e985464c7298@oss.nttdata.com> <160250511275.1171.7692218521107860164.pgcf@coridan.postgresql.org> <369018a4-746c-6914-4983-1b79aa9fdd37@oss.nttdata.com> <4ab1bf5ab895d44ff0a3b3d06d1f85b2@oss.nttdata.com> <5d13be75-ed32-c500-f029-5838ba77d6c9@oss.nttdata.com> <2f749a3bd1b49f1d282abf59619fe1f5@oss.nttdata.com> <050fd52dcddac965ad24a636c25a5611@oss.nttdata.com> From: Fujii Masao Message-ID: <2e9d596e-5b33-3368-682b-87431b65ce8f@oss.nttdata.com> Date: Wed, 11 Nov 2020 02:12:44 +0900 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.4.1 MIME-Version: 1.0 In-Reply-To: <050fd52dcddac965ad24a636c25a5611@oss.nttdata.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 2020/11/09 18:02, Seino Yuki wrote: > 2020-11-09 15:39 に Seino Yuki さんは書きました: >>>> >>>> However, let me confirm the following. >>>>> Is this information really useful? >>>>> If there is no valid use case for this, I'd like to drop it. >>>>> Thought? >>>> >>>> I thought it would be easy for users to see at a glance that if there is a case I assumed, >>>> if the last modified date and time is old, there is no need to adjust at all, and if the >>>> last modified date and time is recent, it would be easy for users to understand that the >>>> parameters need to be adjusted. >>>> What do you think? >>> >>> Even without the last deallocation timestamp, you can presume >>> when the deallocation of entries happened by periodically monitoring >>> the total number of deallocations and seeing those history. Or IMO >>> it's better to log whenever the deallocation happens as proposed upthread. >>> Then you can easily check the history of occurrences of deallocations >>> from the log file. >>> >>> Regards, >> >> +1.I think you should output the deallocation history to the log as well. >> >> In light of the above, I've posted a patch that reflects the points made. >> >> Regards, > > Sorry. There was a typo in the documentation correction. > I'll post a patch to fix it. Thanks for updating the patch! + pgss_info->dealloc = 0; + SpinLockInit(&pgss_info->mutex); + Assert(pgss_info->dealloc == 0); Why is this assertion check necessary? It seems not necessary. + { + Assert(found == found_info); Having pgssSharedState and pgssInfoCounters separately might make the code a bit more complicated like the above? If this is true, what about including pgssInfoCounters in pgssSharedState? PGSS_FILE_HEADER needs to be changed since the patch changes the format of pgss file? + /* Read pgss_info */ + if (feof(file) == 0) + if (fread(pgss_info, sizeof(pgssInfoCounters), 1, file) != 1) + goto read_error; Why does feof(file) need to be called here? +pgss_info_update(void) +{ + { Why is the second "{" necessary? It seems redundant. +pgss_info_reset(void) +{ + { Same as above. +pg_stat_statements_info(PG_FUNCTION_ARGS) +{ + int64 d_count = 0; + { Same as above. + SpinLockAcquire(&c->mutex); + d_count = Int64GetDatum(c->dealloc); + SpinLockRelease(&c->mutex); Why does Int64GetDatum() need to be called here? It seems not necessary. + + + pg_stat_statements_info() returns bigint + + pg_stat_statements_info + + Isn't it better not to expose pg_stat_statements_info() function in the document because pg_stat_statements_info view is enough and there seems no use case for the function? Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION