我们的数据库由许多表组成,其中大多数使用整数代理键作为主键。这些主键中约有一半位于标识列上。
数据库开发始于 SQL Server 6.0。
从一开始就遵循的规则之一是,避免根据递增键创建聚集索引,正如您在这些索引优化技巧中找到的那样。
现在使用 SQL Server 2005 和 SQL Server 2008,我强烈的印象是情况发生了变化。同时,这些主键列是表的聚集索引的完美首选。
我在 mysqldump 上玩了一会儿,我想知道它是否默认导出索引 ( FULLTEXT, INDEX,...)。我阅读了它,我找到了这个选项:
--disable-keys, -K
Run Code Online (Sandbox Code Playgroud)
这表明,它实际上确实导出了索引。但我不想相信我的解释,我想确保我做对了(或错了;-))。任何人都可以确认吗?
我们运行的网站在一个表中具有 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(...)吗?
什么是 Percona?
它与 MySQL 有何不同?
我们什么时候应该考虑从库存 MySQL 切换(或升级)到 Percona?
为了在我们的情况下添加一些细节,我们几乎只使用具有广泛外键约束和一些存储过程的 InnoDB(我知道 Percona 已经做了很多优化)。
我们目前发现 MySQL 对我们的查询优化不佳,因此任何超过 3-4 个连接的查询我们都必须使用 STRAIGHT 连接显式构建以提高性能。
是否有任何命令行工具可以将 MySQL 数据库转换为 PostgreSQL?我还想知道是否有办法使用普通mysqldump命令转换数据库。
我按照本指南在 Percona Server 5.5 上运行了复制,并想知道我是否应该添加read-only=1到我的从属设备my.cnf以使其只读?
该指南为 mysql 表设置复制,以便复制用户,但我主要使用从属来获取 mysqldumps,在紧急情况下将其重新配置为主,所以我认为我们不需要(或应该)启用写入它不断?
我试图在 SQL Server 中找到一些关于阻塞的信息,但我找不到关于它是什么以及它是如何发生的简明解释。你能帮我解惑吗?
我有一个很大的 MySql DB (150GB),直到现在我才注意到innodb_file_per_table设置为off导致整个数据库托管在一个文件 ( ibdata1) 上。我想激活innodb_file_per_table并让它追溯地将数据库分成几个文件,最好的方法是什么?
目前,在我们的项目中,我们为 PostgreSQL 数据库使用专用服务器。
理论上,我们可以在一些云平台上运行任何东西。但是,PostgreSQL 配置与硬件配置严格相关。我们正在寻找的是具有原生 PostgreSQL 支持的云解决方案。
以下是所需功能的列表:
那么这样的服务有哪些选择和最佳选择呢?
我是 DBA 新手,我有使用 Microsoft SQL Server 的经验,但我想跳到 FLOSS。
我正在创办一家公司,我们开发了一个带有 Postgres 后端的应用程序 (PHP),我们也做了一些与 MySQL 进行比较的测试。我们观察到 MySQL 的速度是 PostgreSQL 的两倍。
我做了一个有形的性能测试:
我究竟做错了什么?
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 ×6
postgresql ×3
innodb ×2
mysqldump ×2
percona ×2
sql-server ×2
cloud ×1
export ×1
index ×1
join ×1
locking ×1
my.cnf ×1
myisam ×1
mysql-5.5 ×1
performance ×1
replication ×1
testing ×1