小编mon*_*ona的帖子

SQL数据库性能优化

我们有一个写入量很大的 SQL 数据库(SQL Server 2008),一段时间后插入速度会降低。我阅读了这些类似的问题:Sql insert speed upSQL:如果不是 CPU 或 IO什么会降低插入速度加速插入

此外,我阅读了这篇关于如何分析 SQL Server 性能的文章,这有助于我了解如何找到瓶颈(例如,通过查询sys.dm_exec_requestssys.dm_os_wait_stats),但我仍然难以解释查询结果和解决问题。

首先,我开始查询sys.dm_exec_requests只返回一个状态为“正在运行”的会话 ID(选择查询)(即,我发现没有暂停会话)。那么,如果没有任何东西阻止我的插入,为什么它会变慢?

接下来,我曾经sys.dm_os_wait_stats检查有关所有等待类型的统计信息。结果显示LATCH_EX、CXPACKETPAGEIOLATCH_SHwait_time最长(分别为 694379 ms、310364 ms 和 308335 ms)。

然后我曾经sys.dm_os_latch_stats找到最流行的闩锁类型,在我的情况下是ACCESS_METHODS_DATASET_PARENT.

  • 首先,我不知道如何在查询的结果中找到与每个 session_id 相关的查询sys.dm_exec_requests
  • 其次,sys.dm_os_wait_stats应该将多少等待时间(in )视为高?如果上述数字(sys.dm_os_wait_stats 的结果)很高,我该如何减少它们?
  • 据我了解,ACCESS_METHODS_DATASET_PARENT与并行性有关,我发现的解决方案之一是降低并行度。那正确吗?
  • 在 MySQL 中,有一些可以在安装后立即完成的调整设置(例如,增加 innodb 缓冲池大小),SQL Server …

performance sql-server-2008 sql-server performance-tuning

7
推荐指数
1
解决办法
412
查看次数

SQLite - 即使选择查询速度很快,我是否应该添加一些索引?

我有一个 SQLite DB,其中只有一个大小约 1.5 MB 的表(实际上,总共有约 30 个表,但每个表都存储在一个单独的 .db 文件中)。

当我EXPLAIN QUERY PLAN用于任何表时,它显示全表扫描,据我所知这是不好的。但是,没有一个表有索引,而且选择查询的速度很快。

所以,我想知道我是应该在我们的表上添加一些索引还是保持它们原样?(现在,表最多有 5k 行,将来它们最多可能有 100k 行)。

附注。选择和插入的数量几乎相同..

所有的想法都受到高度赞赏。

sqlite performance index performance-tuning

3
推荐指数
1
解决办法
292
查看次数