标签: ingres

在其他数据库中EXPLAIN SELECT

我发现EXPLAIN SELECT查询在MySQL中非常有用,因为它提供了有关如何执行SQL的信息,并提供了分析的机会,例如,您应该添加的缺失索引,以便在执行查询本身和分析统计数据之前改进响应.

我的问题是:在像MS Sql,Firebird,Ingres这样的数据库中,是否有类似的命令?

在Firebird中我们有PLAN,但是非常弱,因为很多时候为了查看一个简单的错误,必须运行很长的查询.

最好的祝福,

Mauro H. Leggieri

mysql oracle firebird ingres sql-execution-plan

18
推荐指数
1
解决办法
6419
查看次数

在 Kubernetes 中阻止入口上的 HTTP 流量

按照https://github.com/kubernetes/contrib/blob/master/ingress/controllers/gce/README.md我的 ingress.yaml示例如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-app
  annotations:
    kubernetes.io/ingress.allow-http: "false"
spec:
  tls:
  - secretName: my-app
  rules:
  - host: t.my-app.com
    http:
      paths:
      - backend:
          serviceName: my-app
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

我希望它能够阻止所有 http 流量,但不幸的是这并没有发生!我仍然得到 443 和 80!我花了好几个小时试图了解注释是否有任何问题,但我根本找不到任何方法来推断它!

load-balancing ingres google-cloud-platform kubernetes

6
推荐指数
0
解决办法
383
查看次数

多线程 - 避免和处理数据库死锁

我正在寻找一个从Java 6应用程序中处理数据库死锁的好策略; 可能会有几个并行线程同时写入同一个表.如果数据库(Ingres RDMBS)检测到死锁,它将随机杀死其中一个会话.

考虑到以下要求,处理死锁情况的可接受技术是什么?

  • 总的经过时间应尽可能小
  • 杀死会话将导致重大(可衡量的)回滚
  • 时间线程无法相互
    通信,即策略应该是自治的

到目前为止,我提出的策略是这样的:

short attempts = 0;
boolean success = false;
long delayMs = 0;

Random random = new Random();
do {
    try {
        //insert loads of records in table 'x'
        success = true;
    } catch (ConcurrencyFailureException e) {
        attempts++;
        success = false;
        delayMs = 1000*attempts+random.nextInt(1000*attempts);

        try {
                Thread.sleep(delayMs);
            } catch (InterruptedException ie) {
        }
    }
} while (!success);
Run Code Online (Sandbox Code Playgroud)

它可以以任何方式改进吗?例如,等待固定数量(幻数)秒.是否有不同的策略可以产生更好的结果?

注意:将使用几种数据库级技术来确保死锁在实践中非常罕见.此外,应用程序将尝试避免调度同时写入同一个表的线程.上述情况只是"最糟糕的情况".

注意:插入记录的表被组织为堆分区表并且没有索引; 每个线程都会在其自己的分区中插入记录.

java algorithm ingres scenarios database-deadlocks

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

如何从Ingres中的虚拟表中选择零个或一个记录

在大多数SQL产品中,我可以从没有表或虚拟表中选择如下:

-- Oracle
SELECT 1 FROM DUAL

-- Many other SQL products (including Ingres)
SELECT 1
Run Code Online (Sandbox Code Playgroud)

有时,我想在上面的语句中添加一个条件,以便根据条件检索0或1条记录

-- Oracle
SELECT 1 FROM DUAL WHERE 1 = 0

-- Many other SQL products (but not Ingres)
SELECT 1 WHERE 1 = 0
Run Code Online (Sandbox Code Playgroud)

但上述内容对Ingres 10.0不起作用.我该怎么做?

sql select ingres

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

ORDER BY是否会影响返回SELECT查询的行数?

我正在经历规范可怕的遗留数据库的痛苦,并且发现了我认为DBMS的一个错误.

此查询返回我期望的结果:

SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_id, thing_name;
(16 rows)
Run Code Online (Sandbox Code Playgroud)

我第一次运行查询时,无意中在ORDER BY中使用了错误的列,如下所示:

SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_name, location;
(33 rows)
Run Code Online (Sandbox Code Playgroud)

请注意,唯一要更改的是ORDER BY,并且返回的行数从16增加到33.它提供的结果不是查询指定的DISTINCT.

我相信这是一个彻头彻尾的错误,但是同事说这是正常的,因为当我们通过"位置"进行排序时,会在结果中选择一个无形的.

ORDER BY是否会影响SELECT查询中返回的行数?

编辑:我有另一个人查看查询,我将查询复制到两个单独的文件,然后对它们运行diff命令.100%确定两个查询之间的唯一区别是ORDER BY中列出的列.

更新:Ingres已发布修补程序14301,其中包含错误修正:"错误126640(GENERIC)查询具有order-by表达式,而不同聚合返回的行数超出预期.order-by表达式中的列不在选择列表中."

即有问题的查询现在会导致错误,因为结果不正确.

sql ingres

5
推荐指数
2
解决办法
1043
查看次数

如何限制Ingres中任意查询的结果集大小?

在Oracle中,可以通过在"虚拟" rownum列上进行过滤来限制在任意查询中返回的行数.请考虑以下示例,该示例最多将返回10行.

SELECT * FROM all_tables WHERE rownum <= 10

是否有简单,通用的方法在Ingres做类似的事情?

sql oracle ingres

4
推荐指数
1
解决办法
7482
查看次数

Ingres中的DATE_ADD功能

许多(大多数?几乎所有?)SQL方言都有办法执行这种类型的函数:date_add(MyDate,MyInterval)

我已浏览过所有文档,但我无法在Ingres中找到此功能.我的直接目标是获得"MyDate加3个月".有没有人知道是否有一种简单的方法可以做到这一点,我错过了?

注意:我意识到使用现有的SQL 可以实现这一点.但它将涉及:

  • 从我的约会中提取月份
  • 在这个数字上加3
  • 从我的约会中提取日期和年份
  • 使用新的日,月,年创建新的日期
  • 但我还需要测试一下是否跨越一年边界,所以也会有一个CASE声明

对于Oracle,MySQL,PostgreSQL,SQL Server以及我能想到的所有其他东西来说,这是一个非常简单的SQL.这让我充满希望,我在某种程度上错过了一个更简单的替代方案.

sql ingres date-math

4
推荐指数
1
解决办法
4571
查看次数

使用不同的密钥将表中的数据复制到同一个表中

我很好奇是否有可能从表中获取数据,并复制它但指定一个新的主键

例如,我希望获取具有列"question_id"的数据,该列充当表的唯一键,并将具有该question_id的表中的所有数据复制到同一个表中但使用新的question_id.

有关使用SQL是否可行的任何想法?

我的数据库是一个ingres数据库

提前致谢

sql ingres

4
推荐指数
1
解决办法
7125
查看次数

限制在Ingres选择查询中检索的行数

我想知道是否有办法在Ingres的select查询中选择后续的一堆行.例如,可以使用tablename中的select first 500来选择前500行,但如果我想选择501到1000的行,有没有办法做到这一点?

sql ingres

3
推荐指数
2
解决办法
9743
查看次数

是否允许空字符串作为Java中的枚举成员

我在使用一些遗留代码时遇到了一些问题.一张票要我写一个测试过程有效性的脚本; 但是,当脚本运行时,我不断收到此异常:

 java.lang.IllegalArgumentException: No enum const class edu.cmu.s3.common.enums.RegistrationStatus.;
Run Code Online (Sandbox Code Playgroud)

对于记录,正在使用的数据库是旧的Ingres遗留系统,因此空值表示为空字符串 - 非常漂亮,我必须添加.

无论如何,看起来每当遇到空字符串时,它就会在创建枚举时失败.我检查了枚举,但它包含了这个成员:

BLANK("", "Blank")
Run Code Online (Sandbox Code Playgroud)

这会让我觉得空字符串确实是一个有效的参数,但它看起来并非如此.

CAN枚举使用空字符串作为参数,还是我需要更新比我最初假设更多的遗留代码?

谢谢您的帮助

java ingres

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