在超时之前,我将在哪里设置查询在 MySQL 5.0.68 中等待锁定的最长时间?
我有一个最近变得不可预测的 SQL Server 2005,我正在摸索为什么。在几秒钟内执行的查询正在更改计划并花费几分钟(在全表扫描或索引假脱机中花费时间)。现在第一个也是最明显的事情是,统计数据已经过时导致优化器感到困惑,但我相信事实并非如此 - 首先是因为基础数据没有显着变化(例如,在一年的数据之上添加一天的数据已经在表中),其次是因为自动创建统计和自动更新统计都是真的。然而,优化器越来越困惑;在 Tuning Advisor 中运行 SQL 给了我很多CREATE STATISTICS似乎可以修复它的多列语句(直到 SQL 的下一个错误行为)。
我可以用来解决根本原因的任何策略想法吗?为什么“正常”统计数据还不够?
我是一名软件开发人员,正在帮助我的团队聘请一名 MySQL DBA。我们面临的核心挑战是:
由于 Hibernate,查询和性能变慢。
数据库管理(备份、调优、补丁、安全)。
由于来自新数据源的数据增加和旧数据的积累而产生的可扩展性。
我们计划在未来开始数据挖掘和数据仓库。不知道如何,但这是方向。
我们通常有一些编程案例,我们要求开发人员为面试构建一些东西,但以同样的方式进行 DBA 面试有点困难。
你能就如何进行面试提出建议吗?
另一个 SQL 服务器问题:我有一个简单的查询,它提供了自计数器重置以来 CPU 最密集的 SQL:
select top 10
sum(qs.total_worker_time) as total_cpu_time,
sum(qs.execution_count) as total_execution_count,
qs.plan_handle, st.text
from
sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text
order by sum(qs.total_worker_time) desc
Run Code Online (Sandbox Code Playgroud)
问题1:究竟是什么plan_handle?它似乎不是计划的散列,就像在 Oracle 中一样。我问是因为我希望能够检测语句的计划发生变化的情况。
问题2:一旦有了plan_handle,我就对实际的计划感兴趣。所以我这样做,例如:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
Run Code Online (Sandbox Code Playgroud)
在 query_plan 列中,我得到一个链接,单击该链接时会显示一个 XML 文档。如果我将它作为whatever.sqlplan 保存在磁盘上,我可以在Windows 中双击它并在Management Studio 中正确显示。一定有办法避免这一步吗?!
问题 3:有没有办法将 XML 转换回文本格式,就像过去的 SET SHOWPLAN_TEXT 一样?我希望能够以图形方式查看它们,但也希望以某种有意义的方式自动比较它们。
谢谢!
我的数据库应用程序运行许多不同的查询。我已设置log_min_duration_statement为 1000。但记录在那里的查询并不总是很慢,大多数情况下它们只需要几毫秒。
是否可以获得所有查询的统计信息,以及它们花费超过 1000 毫秒的频率?
我在工作中被要求多次违反第一范式(跨列重复组,使用空/空值),“为了计算机处理能力”。简而言之,一个“学生”表应该至少有 8 个空字段(例如电话:telephone1、telephone2、telephone3...)而不是我的建议 - 一个包含电话号码(和可能的其他元数据)的“电话”表外键是学生证号。我的老板说最好以这种方式存储它们,因为“CPU 周期更少,这在 Web 平台中很重要”,而不是使用关系。我说,在最坏的情况下,它可以忽略不计。
在那个例子中,使用关系(假设在一个中等规模的 web 应用程序中用大量记录填充表)明显比使用那种表模式慢?
有谁知道将旧的放映计划文本转换为图形格式的方法?
换句话说,我可以获取从 SET SHOWPLAN_TEXT ON 返回的 StmtText 并将其转换为显示图形执行计划吗?我是否需要将其解析为 XML 和 .sqlplan 格式才能查看图表?
埃里克:,这是一个例子,针对 AdventureWorks 运行:
SET SHOWPLAN_TEXT ON
GO
SELECT c.CustomerID, soh.ShipDate
FROM Sales.SalesOrderDetail sod
INNER JOIN Sales.SalesOrderHeader soh ON sod.SalesOrderID = soh.SalesOrderID
INNER JOIN Sales.Customer c ON c.CustomerID = soh.CustomerID
WHERE sod.SpecialOfferID = 2
AND soh.ShipDate between '2003-01-01 00:00:00.000' and '2004-01-01 00:00:00.000'
AND c.CustomerType = 'I'
Run Code Online (Sandbox Code Playgroud)
你会看到这个 StmtText 返回:
StmtText
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Hash Match(Inner Join, HASH:([soh].[CustomerID])=([c].[CustomerID]))
|--Hash Match(Inner Join, HASH:([sod].[SalesOrderID])=([soh].[SalesOrderID]))
| |--Index Seek(OBJECT:([AdventureWorks].[Sales].[SalesOrderDetail].[ix_nc_SpecialOfferID_inc_SalesOrderID] AS [sod]), SEEK:([sod].[SpecialOfferID]=(2)) ORDERED FORWARD)
| |--Index …Run Code Online (Sandbox Code Playgroud) 每个管理员、开发人员都有自己的脚本集合(一些模式)。他们有时会被解雇一份工作,而他们又受雇于另一份工作。有没有好的、好用的、有索引的工具来收集常用的sql脚本(默认结构化文件夹/文件系统)?
在事务复制中 - 前 8000 行快照复制到订阅者快照,然后就像它成功完成一样。
发布表有 2100 万行。快照显示已成功完成,然后我们在事务复制开始时收到错误“无法在订阅者处找到行”。
这是在运行 SQL Server 2005 Standard 64 位 SP3 和累积更新 4 的新 64 位服务器上。我们也有一个独立的分销商。
我们使用累积更新 4 将服务器/操作系统升级到 Windows 2008 R2 64 位和 SQL Server 从 32 位升级到 64 位,以解决分页问题/错误。
有没有人遇到过这种情况?
在 Oracle 中,我在哪里可以看到 DBF 自动扩展的历史记录?或者获取 DBF 上次自动扩展的时间戳,以及多少?
它适用于 SELECT 和 UPDATE 语句。
是否还有更多的语句可以使用?
我能够将它与 create 一起使用,但不确定是否真正考虑了该提示。
SQL> create /*+ PARALLEL */ table t1
( id number,
name varchar2(40));
Table created.
SQL>
Run Code Online (Sandbox Code Playgroud)
除了 INSERT 和 UPDATE,什么时候都考虑 PARALLEL 提示?
有什么快速的方法可以找出正在访问您的数据库的内容,尤其是当日志文件变得疯狂时。SQL探查器?如果是这样,如何?
当我尝试将数据加载到 Oracle 时,我遇到了SQL*Loader-605: Non-data dependent ORACLE error occurred错误。
数据(是?)在.txt文件中,其大小为 95GB。
以下是有关错误的更多详细信息:
用于 ROWS 参数的值从 64 更改为 19
ORA-01653: 无法在表空间 USERS 中将表 M.ECZ 扩展 8192
SQL*Loader-605:发生与数据无关的 ORACLE 错误 -- 加载停止。
继续加载时指定 SKIP=8351926。
表 ECZ:8351925 行已成功加载。0 由于数据错误未加载行。0 行未加载,因为所有 WHEN 子句都失败。0 行未加载,因为所有字段都为空。
为绑定数组分配的空间:245100 字节(19 行)读取缓冲区字节:1048576
跳过的逻辑记录总数:1
拒绝的逻辑记录总数:0
丢弃的逻辑记录总数:0
你有什么建议?谢谢。
performance ×4
mysql ×3
oracle ×3
sql-server ×2
hints ×1
join ×1
locking ×1
mysql-5 ×1
oracle-11g ×1
postgresql ×1
profiler ×1
rdbms ×1
replication ×1
scripting ×1
sql-loader ×1