AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-183848

slowjams's questions

Martin Hope
slowjams
Asked: 2019-07-17 18:26:46 +0800 CST

“创建模式”与“创建数据库”的方式相同吗?

  • 0

我是 DBMS 的初学者,对不起,如果我的问题听起来很愚蠢。我经常看到一些教科书上说:create a schema。这是否意味着“创建数据库”?

但是,模式不也是表的骨架吗?我们不是经常用schema来描述一个表的结构,比如列名/列类型吗?那么架构是表概念还是数据库概念?

schema dbms
  • 1 个回答
  • 78 Views
Martin Hope
slowjams
Asked: 2019-07-04 21:03:07 +0800 CST

锁定何时在事务中实际发生?

  • 2

假设我们有一笔交易 A:

BEGIN TRAN A;
//--------------------< time a
 SELECT productid, unitprice
 FROM Production.Products
 WHERE productid = 2;
//--------------------< time b
 UPDATE Production.Products
 SET unitprice += 1.00
 WHERE productid = 3;
COMMIT TRAN A;

我们知道,对于事务 A(在默认的 Read Committed 隔离级别下),需要一个共享锁(针对 productid 2)和一个排他锁(针对 productid 3)。

我的问题是,对于 productid 3 的独占锁,锁是什么时候发生的?在事务开始时,事务真正开始更新的时间是在时间 a 还是时间 b?

sql-server locking
  • 3 个回答
  • 1146 Views
Martin Hope
slowjams
Asked: 2019-07-04 16:58:22 +0800 CST

检查点之前/之后的读取不一致?

  • 0

假设连接 1 中的事务尝试修改记录 A 然后提交。因为提交仅将缓冲区中的日志记录刷新到磁盘,所以检查点的工作是将所有脏页刷新到磁盘 (mdf)。并且有一个连接B在连接1提交后试图读取记录A。(由于A已经提交,这里没有锁的东西)

所以我的问题是:

Q1-如果连接B在检查点之前读取记录A,是否意味着它将读取旧值?

Q2-如果连接B在检查点之后读取记录A,是否意味着它将读取新值?

Q3-有时连接B得到新值,有时它得到旧值,这不是很奇怪吗,解决这个问题的方法是A需要手动触发检查点吗?

sql-server locking
  • 1 个回答
  • 123 Views
Martin Hope
slowjams
Asked: 2019-07-03 16:02:52 +0800 CST

系统故障导致两个事务不一致

  • -3

在此处输入图像描述

假设用户 A 的交易 4 上面的图片。

A 更新了 Account 表中的一条记录,将余额从 100 更改为 0,然后出现了一个检查点,因此所有脏页都写入了磁盘。

在时间 t,用户 B 检查 Account 表并将余额为零的记录添加到 Audit 表中,并在系统故障前立即提交。然后出现系统故障,所以事务4被回滚了,对于账户id 1234,然后余额又是100,所以这个账户id不应该在Audit表中,而是因为用户B添加了它。那么如何解决这种不一致呢?

sql-server locking
  • 1 个回答
  • 79 Views
Martin Hope
slowjams
Asked: 2019-06-26 03:34:44 +0800 CST

为什么处理有时会终止,有时不会

  • 2
DECLARE @Error int;
INSERT INTO Person.BusinessEntityContact
 (BusinessEntityID
 ,PersonID
 ,ContactTypeID)
 VALUES
 (0,0,1);
SELECT @Error = @@ERROR;
PRINT ‘The Value of @Error is ‘ + CONVERT(varchar, @Error);

我有 :

消息 547,级别 16,状态 0,第 4 行 INSERT 语句与 FOREIGN KEY 约束“FK_BusinessEntityContact_Person_PersonID”冲突......该语句已终止。@Error 的值为 547

这意味着在抛出错误后该过程仍在继续。

但是,如果我尝试创建一个表(运行下面的脚本两次以触发错误)为:

CREATE TABLE OurIFTest(
 Col1 int PRIMARY KEY
 );
IF @@ERROR != 0
 PRINT 'Problems!';
ELSE
 PRINT 'Everything went OK!';

然后我得到了

消息 2714,级别 16,状态 6,第 2 行数据库中已经有一个名为“OurIFTest”的对象。

这意味着在抛出错误时进程终止。

那么为什么进程因“创建”而不是“插入”而终止?

sql-server error-handling
  • 1 个回答
  • 110 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve