小编Rol*_*DBA的帖子

“避免基于递增键创建聚集索引”是 SQL Server 2000 天以来的神话吗?

我们的数据库由许多表组成,其中大多数使用整数代理键作为主键。这些主键中约有一半位于标识列上。

数据库开发始于 SQL Server 6.0。

从一开始就遵循的规则之一是,避免根据递增键创建聚集索引,正如您在这些索引优化技巧中找到的那样。

现在使用 SQL Server 2005 和 SQL Server 2008,我强烈的印象是情况发生了变化。同时,这些主键列是表的聚集索引的完美首选。

sql-server-2005 sql-server clustered-index

22
推荐指数
3
解决办法
4675
查看次数

默认情况下,mysqldump 是否导出索引?

我在 mysqldump 上玩了一会儿,我想知道它是否默认导出索引 ( FULLTEXT, INDEX,...)。我阅读了它,我找到了这个选项

--disable-keys, -K
Run Code Online (Sandbox Code Playgroud)

这表明,它实际上确实导出了索引。但我不想相信我的解释,我想确保我做对了(或错了;-))。任何人都可以确认吗?

mysql myisam mysqldump index export

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

哪个更有效,where 子句或与百万多行表的连接?

我们运行的网站在一个表中具有 250 MM 的行,而在另一个表中,我们将其连接到大多数查询中的行不到 15 MM。

示例结构:

MasterTable (Id, UserId, Created, Updated...) -- 15MM Rows
DetailsTable (Id, MasterId, SomeColumn...) -- 250MM Rows
UserTable (Id, Role, Created, UserName...) -- 12K Rows
Run Code Online (Sandbox Code Playgroud)

我们必须定期对所有这些表进行一些查询。一种是抓取免费用户(~10k 免费用户)的统计数据。

Select Count(1) from DetailsTable dt 
join MasterTable mt on mt.Id = dt.MasterId 
join UserTable ut on ut.Id = mt.UserId 
where ut.Role is null and mt.created between @date1 and @date2
Run Code Online (Sandbox Code Playgroud)

问题是这个查询有时会运行很长时间,因为连接发生在 where 之前很久。

在这种情况下,使用 wheres 而不是 joins 或可能更明智where column in(...)吗?

join best-practices

22
推荐指数
2
解决办法
11万
查看次数

Percona 与 MySQL

什么是 Percona?

它与 MySQL 有何不同?

我们什么时候应该考虑从库存 MySQL 切换(或升级)到 Percona?

为了在我们的情况下添加一些细节,我们几乎只使用具有广泛外键约束和一些存储过程的 InnoDB(我知道 Percona 已经做了很多优化)。

我们目前发现 MySQL 对我们的查询优化不佳,因此任何超过 3-4 个连接的查询我们都必须使用 STRAIGHT 连接显式构建以提高性能。

mysql innodb performance percona percona-server

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

如何将 MySQL 数据库转换为 PostgreSQL?

是否有任何命令行工具可以将 MySQL 数据库转换为 PostgreSQL?我还想知道是否有办法使用普通mysqldump命令转换数据库。

mysql postgresql mysqldump

22
推荐指数
2
解决办法
4万
查看次数

MySQL复制从站是否应该设置为只读?

我按照本指南在 Percona Server 5.5 上运行了复制,并想知道我是否应该添加read-only=1到我的从属设备my.cnf以使其只读?

该指南为 mysql 表设置复制,以便复制用户,但我主要使用从属来获取 mysqldumps,在紧急情况下将其重新配置为主,所以我认为我们不需要(或应该)启用写入它不断?

mysql replication percona mysql-5.5

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

什么是阻塞以及它是如何发生的?

我试图在 SQL Server 中找到一些关于阻塞的信息,但我找不到关于它是什么以及它是如何发生的简明解释。你能帮我解惑吗?

sql-server locking

20
推荐指数
2
解决办法
3万
查看次数

MySql - 为实时数据库更改 innodb_file_per_table

我有一个很大的 MySql DB (150GB),直到现在我才注意到innodb_file_per_table设置为off导致整个数据库托管在一个文件 ( ibdata1) 上。我想激活innodb_file_per_table并让它追溯地将数据库分成几个文件,最好的方法是什么?

mysql innodb my.cnf

20
推荐指数
2
解决办法
4万
查看次数

PostgreSQL 的最佳云平台

目前,在我们的项目中,我们为 PostgreSQL 数据库使用专用服务器。

理论上,我们可以在一些云平台上运行任何东西。但是,PostgreSQL 配置与硬件配置严格相关。我们正在寻找的是具有原生 PostgreSQL 支持的云解决方案。

以下是所需功能的列表:

  • 根据所选资源自动调整数据库配置
  • 开箱即用的复制设置

那么这样的服务有哪些选择和最佳选择呢?

postgresql cloud

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

MySQL 和 PostgreSQL 对于相同模式/查询的性能差异

我是 DBA 新手,我有使用 Microsoft SQL Server 的经验,但我想跳到 FLOSS。

我正在创办一家公司,我们开发了一个带有 Postgres 后端的应用程序 (PHP),我们也做了一些与 MySQL 进行比较的测试。我们观察到 MySQL 的速度是 PostgreSQL 的两倍。

我做了一个有形的性能测试:

  • 表中具有等效列数据类型的相同列。
  • 行数相同。
  • 两者中的相同索引(包括主键)。
  • CPU 负载处于空闲状态,而 Postgres 机器则要好得多。
  • 和相同的查询(显然)。

我究竟做错了什么?

PS:我阅读了许多关于数据库引擎性能调优的“howtos”。
PS(2):我们在 MySQL 数据库上使用 InnoDB(每个表一个文件)。


嗨垫!

我做了三个常见的选择(和最难的)查询。

关于磁盘的问题,当然不一样;在 Postgres 中,它是一个 SSD(快了几乎三倍)。

MySQL缓存数据:

+------------------------------+----------------------+
| Variable_name                | Value                |
+------------------------------+----------------------+
| binlog_cache_size            | 32768                |
| have_query_cache             | YES                  |
| key_cache_age_threshold      | 300                  |
| key_cache_block_size         | 1024                 |
| key_cache_division_limit     | 100                  |
| max_binlog_cache_size        | 18446744073709547520 |
| query_cache_limit            | …
Run Code Online (Sandbox Code Playgroud)

mysql postgresql testing

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