标签: database-tuning

我可以安全地终止 InnoDB 表上的 OPTIMIZE TABLE 吗?

MySQL 的kill 警告文档:

警告

杀死一个表上的REPAIR TABLEorOPTIMIZE TABLE操作会MyISAM导致表损坏且无法使用。对此类表的任何读取或写入都会失败,直到您再次对其进行优化或修复(无中断)。

那是针对 MyISAM 的。

杀死OPTIMIZE TABLE针对 InnoDB 表运行的进程是否也不安全?

mysql innodb database-tuning mysql-5.5

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

由于数据移动,无法使用 NOLOCK 继续扫描

我们运行 SQL Server 2000,每天晚上都会遇到一些这样的错误。

Could not continue scan with NOLOCK due to data movement
Run Code Online (Sandbox Code Playgroud)

引发此错误的查询是一个大型复杂查询,它连接了十多个表。我们的基础数据可以经常更新。

文化“最佳实践”是,在过去,NOLOCK提示的引入提高了性能并改进了并发性。这个查询不需要 100% 准确,即我们会容忍脏读等。然而,我们正在努力理解为什么数据库会抛出这个错误,即使我们有所有这些锁定提示。

任何人都可以对此有所了解 - 温柔一点,我实际上是一名程序员,而不是 DBA :)

PS:我们已经应用了前面提到的修复:http : //support.microsoft.com/kb/815008

sql-server-2000 database-tuning locking nolock

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

0 或 100 的填充因子怎么可能相同?

据我了解,填充因子为 80 意味着每个叶级页面的 20% 将是空的,以实现未来的增长。我无法将 0 和 100 的填充因子如何相同!我错过了什么吗?

index database-tuning sql-server-2008-r2 index-tuning

9
推荐指数
1
解决办法
5305
查看次数

为瞬态数据优化 PostgreSQL

我有几个表,每个表有 100-300 列整数类型,它们保存高度易变的数据。数据集由一两个主键作为键,刷新时删除整个数据集,并在一个事务中插入新数据。数据集大小通常是几百行,但在极端情况下可以达到几千行。每秒刷新一次,不同键的数据集更新通常是脱节的,因此删除和重新创建表是不可行的。

我如何调整 Postgres 来处理这样的负载?如果这有什么不同,我可以使用最新和最好的版本。

postgresql optimization database-tuning

8
推荐指数
1
解决办法
1613
查看次数

为什么 SQL Server 为其限定的表的每一行运行一个子查询?

此查询在 ~21 秒内运行(执行计划):

select 
    a.month
    , count(*) 
from SubqueryTest a 
where a.year = (select max(b.year) from SubqueryTest b)
group by a.month
Run Code Online (Sandbox Code Playgroud)

当子查询被变量替换时,它会在 <1 秒内运行(执行计划):

declare @year float
select @year = max(b.year) from SubqueryTest b
select 
    month
    , count(*) 
from SubqueryTest where year = @year group by month
Run Code Online (Sandbox Code Playgroud)

从执行计划来看,“select max...”子选择对“SubqueryTest a:”中的数百万行中的每一行都运行,这就是为什么它需要这么长时间。

我的问题:由于子选择是标量、确定性且不相关,为什么查询优化器不执行我在第二个示例中所做的操作并运行子查询一次,存储结果,然后将其用于主查询?我确定我对 SQL Server 的理解只是一个漏洞,但我真的很想帮助填补它 - 用谷歌几个小时没有帮助。

该表刚超过 1GB,有近 2800 万条记录:

CREATE TABLE SubqueryTest(
  [pk_id] [int] IDENTITY(1,1) NOT NULL
  , [Year] [float] NULL
  , [Month] [float] NULL …
Run Code Online (Sandbox Code Playgroud)

optimization database-tuning sql-server-2008-r2 subquery

8
推荐指数
1
解决办法
9892
查看次数

尝试从 SQL Developer 运行 SQL Tuning Advisor 时出现 ORA-13605

尝试使用 SQL Developer 的 SQL Tuning Advisor 时,出现此错误。

几天前调优顾问正在工作。

在此处输入图片说明

oracle database-tuning oracle-sql-developer

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

如何使用当前服务器资源提高 MySQL 性能?

我有一个 MySQL 数据库,我的一些查询变得很慢。查询时间不稳定。大多数查询都很快,但其中一些(可能是读取和返回的数据较少)需要很长时间。

我知道最佳实践是添加索引或重构代码,但我已经添加了索引并且我不想重构代码(至少当我有其他变体时)。

我有 8 Gb 空闲内存,CPU 在峰值时仅加载到 25%。所以我想使用我所有的资源。

我尝试调整 MySQL 配置,但我没有这种调整的经验,所以我提高了生产力并没有我想要的那么多。下面是一个例子:

# Query_time: 3.019647  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 504
SET timestamp=1313380874;
SELECT COUNT(inboxentities.id) FROM inboxentities  WHERE (active=true)AND(deleted=false)AND((to_ = '44219ca4-a657-4909-b30d-a7ba0ed8e4b0'))AND(notification=true);
Run Code Online (Sandbox Code Playgroud)

PSinboxentities有 500.000 条记录。我有 index1 (idx_to) :to_和 index2 (idx_complex): deleted, notification, active,to_

这是解释选择的结果:

+----+-------------+---------------+------+------------------------------------------------+--------+---------+-------+------+-------------+
| id | select_type | table         | type | possible_keys                                  | key    | key_len | ref   | rows | Extra       |
+----+-------------+---------------+------+------------------------------------------------+--------+---------+-------+------+-------------+
|  1 | SIMPLE      | …
Run Code Online (Sandbox Code Playgroud)

mysql performance memory database-tuning

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

如何确定 MySQL 服务器变慢并且请求有时超时的原因?

我正在开展我的第一个项目,该项目大量使用 MySQL 数据库,并且正在努力理解我遇到的性能问题。

大多数情况下,响应会从服务器快速返回,但是当我有某些脚本在后台运行大量查询(读取和写入数据)时,我发现其他请求接收响应的速度很慢,或者完全超时。

举个例子,昨天当一个进行大量数据库查询的 PHP 脚本正在运行时,对服务器的请求在返回响应之前进行了大量查询的页面超时 - 我什至无法使用 Navicat 连接到数据库,因为它也超时了。

在上面的例子中,我在 SSH 控制台中运行 top/htop,发现 CPU 使用率非常低,内存使用率只有 50% 左右。因此,我认为问题出在数据库上,但我无法理解导致问题的原因,例如它们是否可能是由于:

  • 慢查询
  • 太多联系
  • 每秒查询过多
  • 我不知道的其他潜在问题

我知道慢查询日志,但我的查询都不是很慢。

我可以使用哪些方法或工具来确定导致 MySQL 数据库变慢,有时甚至请求超时的原因?

mysql performance database-tuning

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

为单连接使用调整 Postgres?还是 postgres 错误的工具?

拇指的任何规则work_memmaintenance_work_memshared_buffer等,为的是不预期的并发连接,并且正在做大量的聚集功能的数据库?

我是一名社会科学家,不希望将 Postgres 用作供多个用户共享的数据库,而是作为我自己的工具来操作海量数据集(我有 50 亿条交易记录(csv 中为 600gb)并想退出唯一用户对、估计单个用户的聚合等)。

我可以在网上找到的所有关于调优的建议(这个这个这个等等)都是为那些预计会有大量并发连接的人写的。对于单独使用数据库进行数据操作的人来说,任何人都有基本的经验法则吗?

更新: - 这也意味着几乎没有写入,除了根据主表中的选择创建新表。(显然这很重要——谢谢欧文!)

更新 2: - 我在 Windows 8 VM 上使用 16gb ram、SCSI VMware HD 和 3 个内核(如果这很重要)。

postgresql concurrency database-tuning configuration

6
推荐指数
1
解决办法
451
查看次数

PostgreSQL 不会使用它可能使用的所有 RAM

我的 PostgreSQL 9.4.1 服务器出现性能问题。我已经使用通常的最佳实践(pgtune + google)调整了服务器。这是相关的配置:

# <snip> the default config above

default_statistics_target = 50
maintenance_work_mem = 960MB
constraint_exclusion = on
checkpoint_completion_target = 0.9
effective_cache_size = 11GB
work_mem = 96MB
wal_buffers = 8MB
checkpoint_segments = 16
shared_buffers = 4GB
max_connections = 200

autovacuum = on
log_autovacuum_min_duration = 10000
autovacuum_max_workers = 5
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 25
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
#autovacuum_freeze_max_age = 200000000
autovacuum_vacuum_cost_delay = 20ms
autovacuum_vacuum_cost_limit = -1

#log_statement='mod'
#log_statement='all'

logging_collector = on …
Run Code Online (Sandbox Code Playgroud)

postgresql performance database-tuning postgresql-9.4 performance-tuning

6
推荐指数
1
解决办法
5521
查看次数