我有一个批处理查询,我每天都在我的数据库上运行。但是,它似乎陷入了空闲状态,而且我在调试发生的事情时遇到了很多困难。
查询是同时插入的表上的聚合,我猜这与该问题有某种关系。(聚合基于前几天的数据,因此插入不应影响结果。)
线索
我正在使用 sqlalchemy 在 python 脚本中运行它。但是,我已将事务级别设置为自动提交,因此我不认为事务已包含在事务中。另一方面,当我在 sql 终端中手动运行查询时,我没有看到查询挂起。
通过查询pg_stat_activity
,查询最初作为state='active'
. 大约 15 秒后,状态更改为“空闲”,此外,xact_start
设置为NULL
。等待标志永远不会设置为 true。
在我弄清楚 sqlalchemy 的事务级别自动提交之前,它会挂在 state'idle in transaction'
而不是'idle'
. 自从进行更改后,它的挂起频率可能会稍微降低?
我觉得我没有能力对此进行更深入的挖掘。任何反馈,甚至在没有给出明确答案的情况下解释更多关于不同状态和相关 postgres 内部的信息,都将不胜感激。
尝试使用以下命令镜像数据库时
ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
消息 1475,级别 16,状态 105,第 1 行
数据库“test0916aj8CJ”可能包含尚未备份的批量记录更改。在主体数据库或主数据库上进行日志备份。然后在镜像数据库上还原此备份以启用数据库镜像,或在每个辅助数据库上还原此备份以使其能够加入可用性组。
这可以在不支持数据库的情况下完成吗?或者我应该备份然后丢弃备份。它用于新创建的数据库,因此此时我不需要备份。
我尝试了以下...
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = N’test-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO
Run Code Online (Sandbox Code Playgroud)
但上述方法也不起作用。
谢谢
开始:免责声明
我不是 MySql Server DBA;我主要了解 MSSQL - 这就是为什么我需要你的帮助。
结束:免责声明
我被要求检查为什么 MySql 服务器引擎表现不佳 - 我没有看到或持有所涉及的数据库,想知道从哪里开始。
我从哪里开始?
我应该问那些有权访问 MySql 的人什么问题——我什至不知道他们是在使用 phpmyadmin 还是其他一些工具。
本质上:
当问题出在数据库性能上时,需要询问的关键项目是什么?
在 MSSQL 中,我可以检查sp_who2
现有连接以查看是否有任何阻塞,mysql 中的对应项是什么?* 不必很具体,因为每个项目可能有多种结果,但希望帮助您解决问题,因为它会影响用户 - 显然他们在没有 dba 的情况下设置了 mysql 引擎。
我们的监控解决方案 (SCOM) 当前标记 tempdb 日志空间不足。但是,我们将日志的自动增长设置为 1GB 块,并且驱动器上还有 25GB 的空间。
我看了看那是什么log_reuse_wait_desc
,发现它是ACTIVE_TRANSACTION
我开始怀疑是否出于某种原因日志文件被填满并且自动增长没有启动,经过一些研究我发现即使在ACTIVE_TRANSACTION
.
我找到了一篇关于 tempdb 日志空间不足的类似问题的文章:
他们在这里发布了一个CHECKPOINT
解决问题的关于tempdb
. 我知道CHECKPOINT
将脏页刷新到磁盘,但是我不明白这将如何解决ACTIVE_TRANSACTION
问题?
此外,我也不知道为什么在有足够空间时我们会收到此警报。是否存在tempdb
罐头填充和自动增长由于某种原因不起作用的情况?
我有一个关于将DATEADD()
函数用于标识为的列的问题CHAR (6)
该time_stamp
列包含类似131329
as 的值hhmmss
。每当我尝试创建一个新列来保存列的值time_stamp
+ 5 分钟时,我都会收到错误消息。
消息 242,级别 16,状态 3,第 1 行
字符数据类型到日期时间数据类型的转换导致日期时间值超出范围。`
我想要做的是创建一个新列,它比time_stamp
. 我现在正在处理一份显示“已完成订单”的报告,但我需要该报告将订单显示为“未完成”至少 5 分钟,然后才能在报告中显示为“已完成”。
我有以下数据。
我正在尝试获取项目处于特定状态的天数。下面的原始数据示例,我需要能够获得显示的结果。
我可以得到一些关于如何实现这一目标的指示吗?
??????????????????????????????????????????????????????????
? ID ? STATUS ? ENTRY_DATE ?
??????????????????????????????????????????????????????????
? 541c4cfd009784b7ad7b47a552ab7ea2 ? WIH ? 9/25/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL ? 9/9/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL ? 7/21/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL ? 7/21/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL ? 7/8/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CUR ? 6/25/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL ? 6/25/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL ? 6/16/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? TNJ ? 5/26/2015 ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL …
Run Code Online (Sandbox Code Playgroud) 来自 SQL SSMS 环境,我想复制他们的Print
命令,它允许您在执行查询时打印命令或变量。我正在寻找此功能来帮助在执行期间识别脚本的特定部分。
例如,我们有一个在晚上运行的 .sql 脚本,用于检查特定库存数字的差异。这些库存数字可以说是store_id
1、2、3、4、5。
该脚本的每一个都附加了一个 select 语句store_id
。我希望能够为1PRINT
的 select 语句放置一个语句,Store_ID
以便我可以看到 output.txt 文件并看到标题“ Store_id 1
”然后是库存编号,然后看到标题“ Store_id 2
”等...
在 MSSQL SSMS 中它会像这样
PRINT 'Searching Inventory Discrepancies at Store 1'
Select * from table1 where store_id = '1' etc...
PRINT 'Searching Inventory Discrepancies at Store 2'
Select * from table1 where store_id = '2' etc...
Run Code Online (Sandbox Code Playgroud)
如果我需要澄清请指教,谢谢!
sql-server ×4
t-sql ×2
datetime ×1
mysql ×1
oracle ×1
performance ×1
postgresql ×1
ssms ×1
tempdb ×1
toad ×1