ADO.NET 文档显示了将 SQL 事务的事务级别设置为 Chaos 的可能性。这听起来令人不快,但如果该功能存在,大概它有一些合法用途。
BOL 中的SET TRANSACTION ISOLATION LEVEL命令(啊!看,我可以使用 google 和 BOL)似乎没有任何东西被命名为“混乱”,而 ADO.NET 确实有 5 种模式,除了“混乱”之外,这些模式与记录的级别非常匹配
这个混沌等级是为了什么或谁?(为什么它有一个不友好的名字?)
参考: ADO.NET 枚举
我有一个有 2 列的表格。两列的类型都设置为varchar(38)。如果我为其中一列创建一个值为空的行,它是否会占用与该值不为空相同的存储空间?
换句话说,当创建一行时,MySQL 是否会为该列保留存储空间(取决于其类型)?
在 DB2 中,我有一个包含大型二进制数据的表。现在我清除了整个表并运行了 runstats、reorg、runstats,但是占用的磁盘空间量没有改变。这里可能有什么问题?
该表位于我创建的自己的表空间中,如下所示:
CREATE BUFFERPOOL "MY_BP" SIZE 250 AUTOMATIC PAGESIZE 4096;
CREATE LARGE TABLESPACE MY_TBS IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 64 PREFETCHSIZE 64 BUFFERPOOL MY_BP OVERHEAD 10.500000 TRANSFERRATE 0.140000 FILE SYSTEM CACHING;
Run Code Online (Sandbox Code Playgroud)
我删除/重组如下:
DELETE FROM MY_TBL
RUNSTATS ON TABLE MY_TBL WITH DISTRIBUTION AND DETAILED INDEXES ALL
REORG TABLE MY_TBL
RUNSTATS ON TABLE MY_TABLE WITH DISTRIBUTION AND DETAILED INDEXES ALL
ALTER TABLESPACE MY_TBS REDUCE
Run Code Online (Sandbox Code Playgroud)
表 MY_TBL 在所有这些之前占用了 2.5GB,在删除/重组之后它只使用了3MB。
FWIW:我正在运行 DB2/NT …
在传统的 SQL Server 群集中,当发生故障转移时,所有连接到 SQL Server 失败实例的客户端都会失去连接,每个客户端都必须重新建立到故障转移群集实例的新连接。
AlwaysON 可用性组是否可以缓解此问题?SQL Server 2012 AlwaysON 可用性组的故障转移对于连接到 SQL Server 的客户端是否透明?
sql-server-2008 sql-server sql-server-2012 availability-groups
说我正在运行一个查询
begin tran
update users
set name = 'Jimmy'
where name = 'john'
Run Code Online (Sandbox Code Playgroud)
如果我不回滚事务,是否仍会进行这些更改,它会抛出错误还是会作为回滚?
我有一类查询测试两件事中的一个的存在。它的形式
SELECT CASE
WHEN EXISTS (SELECT 1 FROM ...)
OR EXISTS (SELECT 1 FROM ...)
THEN 1 ELSE 0 END;
Run Code Online (Sandbox Code Playgroud)
实际语句是用 C 生成的,并作为通过 ODBC 连接的即席查询执行。
最近发现,在大多数情况下,第二个 SELECT 可能比第一个 SELECT 更快,并且切换两个 EXISTS 子句的顺序导致至少在我们刚刚创建的一个滥用测试用例中急剧加速。
显而易见的事情就是继续并切换这两个子句,但我想看看更熟悉 SQL Server 的人是否愿意对此进行权衡。感觉就像我依靠巧合和“实施细节”。
(似乎如果 SQL Server 更智能,它将并行执行两个 EXISTS 子句,并让其中一个先完成另一个短路。)
有没有更好的方法让 SQL Server 持续改进此类查询的运行时间?
更新
感谢您抽出时间和对我的问题感兴趣。我没想到有关实际查询计划的问题,但我愿意分享它们。
这是用于支持 SQL Server 2008R2 及更高版本的软件组件。根据配置和使用的不同,数据的形状可能会有很大不同。我的同事考虑对查询进行此更改,因为(在示例中)dbf_1162761$z$rv$1257927703表中的行数总是大于或等于dbf_1162761$z$dd$1257927703表中的行数——有时要多得多(数量级)。
这是我提到的滥用案例。第一个查询很慢,大约需要 20 秒。第二个查询立即完成。
值得一提的是,最近还添加了“优化未知”位,因为参数嗅探会破坏某些情况。
原始查询:
SELECT CASE
WHEN EXISTS (SELECT 1 FROM zumero.dbf_1162761$z$rv$1257927703 rv INNER JOIN zumero.dbf_1162761$t$tx tx ON tx.txid=rv.txid WHERE tx.generation BETWEEN …Run Code Online (Sandbox Code Playgroud) 如何在 MySQL 8.0 上禁用二进制日志记录?
我需要导入一个大型 MySQLDump 文件,并且不想用大量 GB 的数据填充二进制日志。在过去,我会设置log_bin=0在my.cnf并重新启动数据库。
但是在 MySQL 8.0 中,我尝试了各种设置,但每次登录数据库并运行:
SELECT @@global.log_bin;
它不断返回 1
我试过了:
log_bin = 0
log_bin = OFF
#log_bin = 1
Run Code Online (Sandbox Code Playgroud)
是否可以禁用二进制日志?
我知道这个问题可能已经回答了很多次了,但我需要一个更好的方法来解决它,或者向我的老板证明这是一种正常行为,或者我忽略了一些东西。
我不是 DBA,我是一名开发人员,就像我以前的工作一样,我必须担任 DBA Mantle,因为我们现场没有正式的 DBA,或者没有人想认真对待这件事。
我有三个 SQL Server 实例,一个使用 SQL 2008 R2,两个使用 SQL 2016。全部来自生产环境。
SQL 2008 R2 来自我们的主系统,它托管在 Hyper-V 中的虚拟服务器中,并且是专用数据库服务器。该服务器上没有分配其他应用程序,它是一个纯数据库服务器。
问题是服务器配置了 30 GB 的 RAM,而 SQL Server 配置为使用从最小 4 GB 到最大 22 GB。
如果我重新启动,显然服务器内存使用量在服务器性能管理器上趋于平缓,从使用的内存中释放内存到配置的最小值。
我需要帮助理解这种情况,因为所有文档都指向一个无可辩驳的事实,即这在 SQL Server 中是正常的,我已经对此进行了记录,但是我的老板和同事表示这不是数据库的正常行为。如果我做数字,我认为服务器正在请求更多内存。他们说这不是 SQL Server 的正常行为,而且我们忽略了一些东西(工作和其他东西)。为了监控或尝试确定服务器行为,我开始每两个小时发送一次数据库健康报告,以尝试检查发生了什么。对于他们来说,预期的行为是 SQL Server RAM 应该在性能图中上升和下降,而不是一直保持在顶部,据我了解,这是预期行为或 SQL Server 的设计。
但是在不同的时间点,作业上升到执行,并且它们正常完成,一些长时间运行的事务正在运行,但是当我在生成报告后为它们运行查询时,它们消失了。
有什么我忽略的吗?这是正常的吗?有没有办法在不重启实例的情况下释放内存?我已经尝试了很多解决方案
有人可以告诉下面明显的查询有什么问题:
db2 => select next value for schema_name.sequence_name;
Run Code Online (Sandbox Code Playgroud)
结果我得到:
SQL0104N An unexpected token "END-OF-STATEMENT" was found following
"schema_name.sequence_name". Expected tokens may include: "<table_expr>".
SQLSTATE=42601
Run Code Online (Sandbox Code Playgroud) sql-server ×6
db2 ×2
mysql ×2
ado.net ×1
db2-luw ×1
log ×1
maintenance ×1
memory ×1
mysql-8.0 ×1
optimization ×1
sequence ×1
size ×1
transaction ×1
varchar ×1