标签: performance-tuning

优化 MySQL query_cache_min_res_unit

我的查询缓存设置如下:

mysql> SHOW GLOBAL STATUS LIKE 'Q%';
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 2270     |
| Qcache_free_memory      | 6580864  |
| Qcache_hits             | 12802676 |
| Qcache_inserts          | 2094054  |
| Qcache_lowmem_prunes    | 111676   |
| Qcache_not_cached       | 137257   |
| Qcache_queries_in_cache | 7559     |
| Qcache_total_blocks     | 18240    |
| Queries                 | 15571718 |
| Questions               | 15571715 |
+-------------------------+----------+
Run Code Online (Sandbox Code Playgroud)

如您所见,我的 值相当高Qcache_lowmem_prunes,但我仍然有相当多的可用内存(总共 32MB 查询缓存大小中的 6MB)

我想看看是否可以进一步减少Qcache_lowmem_prunes.

我应该使用较低的值query_cache_min_res_unit吗?(现在是 4096)

mysql performance query-cache performance-tuning

2
推荐指数
1
解决办法
4238
查看次数

用于比较表示的准确 PG 数据库大小

我有一个 Java/JDBC 程序,它获取一个示例文件并将数据导入数据库,将其分解为多个关系。该程序针对几种不同的表示多次执行此操作,其中一种使用大对象。我可以分享这些表示的更多细节,但它们很长并且与这个问题无关,因为我正在寻找一些通用的东西。

我想通过在每次导入后检查数据库的大小来比较这些不同表示的大小。该数据库位于 PostgreSQL 9.4 本地 Windows 服务器实例上,没有其他用户和默认配置。它的唯一目的是进行这个测试。

我最初的计划是这样的:

for each representation {
  call VACUUM ANALYZE
  record old DB size with SELECT pg_tablespace_size('pg_default');
  import data into database
  call VACUUM ANALYZE
  record new DB size with SELECT pg_tablespace_size('pg_default');
  store storage cost as new DB size - old DB size
}
Run Code Online (Sandbox Code Playgroud)

显然这种方法有局限性,但我的期望是对于大文件(~100MB),报告的存储成本应该是合理的近似值。请注意,我使用pg_tablespace_size是为了包含主架构之外的数据的贡献,例如大对象(inpg_catalog.pg_largeobjectpg_catalog.pg_largeobject_metadata)。

我想知道这是否是一种正确的方法,以及是否有更好的方法。我不确定是否VACUUM ANALYZE正确更新了 使用的统计信息pg_tablespace_size,即使它是在同一会话中调用的。如果我可以避免调用VACUUM ANALYZE,也会更好,因为这需要以超级用户身份连接才能运行pg_catalog关系。

有什么想法吗?

postgresql performance jdbc performance-tuning

2
推荐指数
1
解决办法
247
查看次数

我可以在具有相同名称的分区的两个表之间交换分区吗?

我正在尝试从备份表中恢复一个分区。两个表都有同名的分区。我的目标是从备份表分区 x 中抓取数据并将其放入原始表分区 x。x 是分区的名称。

我试图通过使用辅助表来做到这一点。有没有办法直接交换它们或任何其他性能更好的解决方案?

performance oracle oracle-11g-r2 plsql partitioning performance-tuning

2
推荐指数
1
解决办法
7571
查看次数

坏索引的定义是什么?我们如何决定?我们应该有什么逻辑?

互联网上有查询发现坏索引

虽然他们的逻辑很简单

如果写入计数 > 读取计数 = 坏索引

这是一个示例查询

    SELECT  OBJECT_NAME(s.object_id) AS 'Table Name',
        i.name AS 'Index Name',
        i.index_id,
        user_updates AS 'Total Writes',
        user_seeks + user_scans + user_lookups AS 'Total Reads',
        user_updates - ( user_seeks + user_scans + user_lookups ) AS 'Difference'
FROM    sys.dm_db_index_usage_stats AS s WITH ( NOLOCK )
        INNER JOIN sys.indexes AS i WITH ( NOLOCK ) ON s.object_id = i.object_id
                                                       AND i.index_id = s.index_id
WHERE   OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
        AND s.database_id = DB_ID()
        AND user_updates > ( user_seeks …
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization index-tuning sql-server-2014 performance-tuning

2
推荐指数
1
解决办法
1932
查看次数

如何调查“积极索引”

在我的数据库上运行 sp_BlitzIndex 后,我发现了许多“主动索引”(https://www.brentozar.com/blitzindex/sp_blitzindex-aggressive-indexes/)。不仅如此,我还发现“积极索引”的数量正在缓慢增加。

我是一名涉足 DBA 方面的开发人员,我不知道如何从 sp_BlitzIndex 提供的有关主动索引的信息改进它们。

我可以调整单个查询的性能,但是我不知道如何找出索引变得激进时可能发生的查询,并且我假设发生锁定是因为服务器负载不足 - 这不会如果我调整单个查询,情况并非如此。

任何有关如何进一步调查的提示将不胜感激。

performance sql-server sp-blitzindex performance-tuning

2
推荐指数
1
解决办法
853
查看次数

一台服务器中的多个数据库问题

我们公司有 5 个不同的数据库。多个数据库中没有一个涉及或利用跨数据库连接。我们有充足的资源和预算。

我们公司正在争论:

  • 1 个服务器实例上的 5 个数据库,

  • 或 5 个不同服务器上的 5 个数据库。

问题:如果我们将所有内容都放在一台服务器上,可能会出现哪些具体问题、障碍问题?我的背景不是 DBA,所以想学习可以与团队讨论的示例。

背景:

公司 1 个服务器实例的论据:我们有带有故障转移群集的“资源调控器”和“AlwaysOn 可用性组”。资源调控器将处理数据库之间的内存、CPU、io 工作负载。因此,与 AlwaysOn DR 一起,它可以处理失控的查询、糟糕的设计、内存问题。

每个数据库 100GB,关键公司信息,最少 5000 万行

我们每秒处理 300 笔交易

RTO = 10 分钟

performance database-design sql-server availability-groups performance-tuning

2
推荐指数
1
解决办法
8729
查看次数

RID 查找与密钥查找之间的性能差异?

非聚集索引使用聚集索引的键定位行与该表没有聚集索引且非聚集索引通过 RID 定位行之间是否存在性能差异?

不同级别的碎片是否也会影响这种性能比较?(例如,在这两种情况下,表的碎片率为 0%、50%、100%。)

performance sql-server clustered-index nonclustered-index bookmark-lookup performance-tuning

2
推荐指数
1
解决办法
4698
查看次数

一个表可以同时具有聚集列存储索引和非聚集列存储索引吗?

一个表可以同时具有聚集列存储索引和非聚集列存储索引吗?

我看到了仅将聚集列存储索引与非聚集二进制行索引一起使用的示例策略。

当我尝试创建集群列存储和非集群列存储时,我收到错误:

Msg 35339, Level 16, State 1, Line 7
Multiple columnstore indexes are not supported.
Run Code Online (Sandbox Code Playgroud)

performance index sql-server columnstore sql-server-2016 performance-tuning

2
推荐指数
1
解决办法
2904
查看次数

NEWSEQUENTIALID 在许多表的数据库中是唯一的吗?

NEWSEQUENTIALID 在数据库中是唯一的吗?我们用 NEWSEQUENTIALID 在数据库中规划了许多表,同时插入并希望确保每个 guid 都是唯一的,无论它们是否在不同的表中。

常规 NEWID() 将保证数据库中的唯一性,并且有重复的机会是被小行星/闪电击中的机会,但是它们并不能缓解碎片问题。

这篇文章讨论了 Mac 地址,但是我想为上面特定的数据库指定问题。 /sf/ask/1988347511/

performance database-design sql-server sql-server-2016 performance-tuning

2
推荐指数
2
解决办法
1224
查看次数

了解何时从查询/计划中删除 Order By 或 Sort 运算符

当我正在阅读和理解时,如果匹配索引以支持查询的键列以相同的方式排序,则需要避免 SQL 查询中不需要的 ORDER BY。

对于下面的数据库测试模式——

CREATE PARTITION FUNCTION DemoPartitionFunction (datetime)
AS RANGE RIGHT
FOR VALUES (DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), -7),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), -6),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), -5),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), -4),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), -3),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), -2),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), -1),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), 0),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), 1),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), 2),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), 3),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), 4),
            DATEADD(dd, DATEDIFF(dd, 0, GETUTCDATE()), …
Run Code Online (Sandbox Code Playgroud)

performance index sql-server query-performance performance-tuning

2
推荐指数
1
解决办法
85
查看次数