小编Sag*_*agi的帖子

Postgres - ON CONFLICT - 如何知道是否发生UPDATE而不是INSERT

我有一张桌子

CREATE TABLE foo
(
    f0 int,
    time_stamp timestamp,
    CONSTRAINT foo_pk PRIMARY KEY (f0)
)
Run Code Online (Sandbox Code Playgroud)

我需要大量写入此表,因此性能是关键.有时,我会写一个具有现有值的记录,f0并且只会更新time_stamp到当前时间.为此,我使用了一个ON CONFLICT..DO UPDATE条款.

问题是我需要知道是否INSERT已经发生或是UPDATE.

我虽然使用第二is_update列.插入,插入false

`ON CONFLICT .. DO UPDATE set is_update=true`
Run Code Online (Sandbox Code Playgroud)

然后RETURNING is_update用来得到我想要的东西.问题在于引入了与数据本身无关的附加列.

sql postgresql upsert postgresql-9.5

12
推荐指数
2
解决办法
2106
查看次数

如何在 kubernetes 内运行的 jenkins 管道中运行 sidecar 容器

我需要使用新数据库构建和运行一些测试。我虽然使用 sidecar 容器来托管数据库。

我已经使用谷歌自己的教程在我的 kubernetes 集群中使用 helm 安装了 jenkins 。我可以启动简单的“hello world”管道,这些管道将从一个新的 pod 开始。

接下来,我尝试使用Jenkin 的文档 将 mysql 实例作为 sidecar 运行。

node {
    checkout scm
    docker.image('mysql:5').withRun('-e "MYSQL_ROOT_PASSWORD=my-secret-pw"') { c ->
        docker.image('mysql:5').inside("--link ${c.id}:db") {
            /* Wait until mysql service is up */
            sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done'
        }
        docker.image('centos:7').inside("--link ${c.id}:db") {
            /*
             * Run some tests which require MySQL, and assume that it is
             * available on the host name `db`
             */
            sh …
Run Code Online (Sandbox Code Playgroud)

continuous-integration continuous-deployment jenkins docker kubernetes

5
推荐指数
1
解决办法
3819
查看次数

如果使用 Jdbc 在 PostgreSQL 中有太多行,如何停止大型查询?

我们运行用户提交的查询,这些查询可能会返回一个很大的结果集。

为了避免内存问题,我们想检测这些情况并取消查询。然后期望用户修改查询。

我们已经使用PreparedStatement#setFetchSize()滚动结果集并以增量方式处理大型结果集。但是,当结果集太大时,我们希望尽可能避免将第一个结果通过网络或任何其他不必要的工作带到客户端和数据库端。

SELECT COUNT(*)...预先执行 a只会降低查询通常表现良好的预期情况的性能。

postgres 有没有办法告诉预期的结果集大小?

sql postgresql jdbc

3
推荐指数
1
解决办法
432
查看次数