我需要跟踪每个表条目被查询的次数,以便确定它们的受欢迎程度并最终按该值排序。
如果它使它更容易,我使用symfony与学说捆绑。
到目前为止,所有的搜索只涉及表中记录的计数,当搜索表条目的命中计数时。到目前为止还没有找到任何东西。
我还没有尝试过这个,但我正在寻找的是比改变我的查询操作和调用每个返回结果的另一个更新查询来增加命中计数更有效、更快速、更容易的东西。
我希望每个数据库表记录之前都有查询次数
我需要跟踪每个表条目被查询的次数,以便确定它们的受欢迎程度并最终按该值排序。
如果它使它更容易,我使用symfony与学说捆绑。
到目前为止,所有的搜索只涉及表中记录的计数,当搜索表条目的命中计数时。到目前为止还没有找到任何东西。
我还没有尝试过这个,但我正在寻找的是比改变我的查询操作和调用每个返回结果的另一个更新查询来增加命中计数更有效、更快速、更容易的东西。
我希望每个数据库表记录之前都有查询次数
4条答案
按热度按时间eanckbw91#
您必须自己计算访问次数,因为PostgreSQL不会跟踪此类信息。
您可以添加一个初始化为0的
counter
列,并进行如下查询:这是一个原子操作,不会出现争用情况,但是如果您一次选择多行,则可能会遇到死锁。
由于频繁的更新是PostgreSQL的杀手,请确保您获得HOT更新:
fillfactor
明显小于100的表,以便每个块中都有可用空间。counter
上放置索引。bweufnob2#
可以使用
v$sqlstats
。因此如果查询为然后,要计算执行次数,可以使用以下查询
sg24os4d3#
只是使用了一个计数器字段,并在每次查询时递增。
11dmarpk4#
Postgres统计信息收集器可能会对您有所帮助。由于开销较大,默认情况下不会启用它,因此要启用它,您需要编辑/etc/postgresql//main中的postgres.conf
搜索“Statistics”(统计数据),您将找到以下部分
取消注解此部分,然后运行
sudo systemctl restart postgresql
然后,除了Statistics Collector文档中概述的其他功能外,您还可以运行以下命令来查看各种统计信息
postgres.conf中所需变更的文档:https://www.postgresql.org/docs/9.1/runtime-config-statistics.html
使用统计信息收集器的文档:https://www.postgresql.org/docs/9.1/monitoring-stats.html