小编a_h*_*ame的帖子

ACID和CAP定理的一致性,它们是一样的吗?

根据我的理解,ACID 的一致性就是保证数据的完整性。

但是,CAP 中的一致性意味着数据可以在分布式系统中快速出现。

这是否意味着:它们不是同一个概念?

distributed-databases acid

20
推荐指数
2
解决办法
2万
查看次数

在 SQL Server 中检测锁定的表或行

我正在尝试了解/学习如何追踪被阻止会话的详细信息。

所以我创建了以下设置:

create table foo (id integer not null primary key, some_data varchar(20));
insert into foo values (1, 'foo');
commit;
Run Code Online (Sandbox Code Playgroud)

现在我从两个不同的客户端连接到数据库两次。

第一届会议议题:

begin transaction
update foo set some_data = 'update'
  where id = 1;
Run Code Online (Sandbox Code Playgroud)

我明确没有在那里提交以保持锁定。

在第二个会话中,我发布了相同的声明,当然,由于锁定而等待。现在我正在尝试使用不同的查询来查看会话 2 正在等待foo表。

sp_who2 显示以下内容(我删除了一些列以仅显示重要信息):

SPID | 状态 | BlkBy | 数据库名称 | 命令 | SPID | 请求ID
-----+--------------+-------+---------+---------- ------+------+-------
52 | 睡觉| . | 食物b | 等待命令 | 52 | 0        
53 | 睡觉| . | 食物b | 等待命令 | …

sql-server-2012 locking

20
推荐指数
1
解决办法
16万
查看次数

在窗口函数中使用 DISTINCT 和 OVER

我正在尝试将查询从 Oracle 迁移到 SQL Server 2014。

这是我在 Oracle 中运行良好的查询:

select
count(distinct A) over (partition by B) / count(*) over() as A_B
from MyTable 
Run Code Online (Sandbox Code Playgroud)

这是我尝试在 SQL Server 2014 中运行此查询后遇到的错误。

Use of DISTINCT is not allowed with the OVER clause
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么问题?在 SQL Server 中可以进行这种查询吗?请指教。

sql-server window-functions sql-server-2014

19
推荐指数
4
解决办法
5万
查看次数

即使零行匹配,也让 SELECT 返回一个常量值

考虑这个选择语句:

SELECT *, 
       1 AS query_id 
FROM players 
WHERE username='foobar';
Run Code Online (Sandbox Code Playgroud)

它返回query_id带有值的列1以及玩家的其他列。

如何将一个至少让上面的SQL回报query_id1,即使选择,反而找不到行那场比赛?

顺便说一句,它是 PostgreSQL 8.4。

postgresql null select

18
推荐指数
2
解决办法
9万
查看次数

Postgres:关系不存在错误

我使用 pg_restore 用转储文件加载我的 postgres 数据库。我与我的用户连接到我的数据库:

sudo -u arajguru psql dump

select current_user;
 current_user 
--------------
 arajguru
Run Code Online (Sandbox Code Playgroud)

现在我能够看到所有新创建的表:

dump=> \dt
               List of relations
 Schema |       Name        | Type  |  Owner   
--------+-------------------+-------+----------
 public | Approvals         | table | arajguru
 public | Approvers         | table | arajguru
 public | Conditions        | table | arajguru
 public | Entities          | table | arajguru
 public | EntityDefinitions | table | arajguru
 public | Projects          | table | arajguru
 public | Rules             | table | arajguru
 public | …
Run Code Online (Sandbox Code Playgroud)

postgresql quoted-identifier

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

postgresql 中获取和返回的元组之间的区别

我在试图找出数据库中的一些性能问题时遇到了困难。我正在使用大量在线资源来了解要监控的内容以及如何解释该信息。

从上面的,我无法找到的之间有什么区别一个明确的解释pg_stat_database.tup_returnedpg_stat_database.tup_fetched

在 pgAdmin4 中,有一个漂亮的图表叫做“Tuples out”,其中对比了这两个概念,但我不知道如何解释这些信息。在官方文档中只说:

  • tup_returned: 此数据库中查询返回的行数
  • tup_fetched: 此数据库中查询获取的行数

“获取”和“返回”究竟是什么意思?

我正在使用 postgresql 10。

postgresql performance monitoring

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

选择哪个具有最大日期或最晚日期

这里有两张桌子。

学校员工

SCHOOL_CODE + STAFF_TYPE_NAME + LAST_UPDATE_DATE_TIME + PERSON_ID
=================================================================
ABE           Principal         24-JAN-13               111222
ABE           Principal         09-FEB-12               222111
Run Code Online (Sandbox Code Playgroud)

PERSON_ID + NAME
=================
111222      ABC
222111      XYZ
Run Code Online (Sandbox Code Playgroud)

这是我的 oracle 查询。

SELECT MAX(LAST_UPDATE_DATE_TIME) AS LAST_UPDATE, SCHOOL_CODE, PERSON_ID
FROM SCHOOL_STAFF
WHERE STAFF_TYPE_NAME='Principal'
GROUP BY SCHOOL_CODE, PERSON_ID
ORDER BY SCHOOL_CODE;
Run Code Online (Sandbox Code Playgroud)

这给出了这个结果

LAST_UPDATE SCHOOL_CODE PERSON_ID
===========+===========+=========
24-JAN-13   ABE         111222
09-FEB-12   ABE         222111
Run Code Online (Sandbox Code Playgroud)

我想为日期最晚的学校选择第一个。

谢谢。

oracle greatest-n-per-group

17
推荐指数
2
解决办法
53万
查看次数

如何将长 PL/pgSQL 代码行拆分为多行?

有没有办法将一长行 PL/pgSQL 代码拆分成多行?我的上下文是一个触发器函数,我按照以下方式将插入记录到表中:

INSERT INTO insert_log (log_time, description)
VALUES (
    now()
    , 'A description. Made up of 3 semi long sentences. That I want to split, in the code, not in the log table, over 3 lines for readability.'
);
Run Code Online (Sandbox Code Playgroud)

postgresql-9.4

17
推荐指数
1
解决办法
1万
查看次数

使用单个命令修改数据库中的所有表

是否有一个或一行命令来修改数据库中的所有表。我想在数据库中的每个表中发出此命令:

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;
Run Code Online (Sandbox Code Playgroud)

我的目标是将字符集从 latin1 修改为 utf8 到所有表。

更新: RDBMS 是 MySQL

mysql alter-table character-set

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

MariaDB 是否支持原生 JSON 列数据类型?

我不是在谈论动态列,而是在询问原生列 JSON 数据类型。简单来说,我可以在任何 MariaDB 版本上运行以下代码吗?

CREATE TABLE example (names JSON);
Run Code Online (Sandbox Code Playgroud)

据我所知,它没有,但我仍然不确定,因为有很多话题谈论 MariaDB 上的 JSON 支持已经很久了,但没有人说它最终实现了。

- 更新 -

刚刚在 MariaDB Jira 上发现三个关于 JSON 数据类型支持的问题仍然存在,这意味着它还没有实现,对吧?

mariadb json

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