小编gbn*_*gbn的帖子

可以让 MySQL 使用多个核心吗?

我已经看到一些专用的 MySQL 服务器,它们只使用一个内核。我比 MySQL 的 DBA 更擅长开发,所以需要一些帮助

设置

服务器非常庞大,具有 OLAP/DataWarehouse (DW) 类型的负载:

  • 主要:96GB RAM,8 核 + 单个 RAID 10 阵列
  • 测试:32GB RAM,4核
  • 最大的 DB 是 540 GB,总共大约 1.1TB,主要是 InnoDB 表
  • Solaris 10 Intel-64
  • MySQL 5.5.x

注意:最大的 DB 是从 OLTP DR 服务器复制的 DB,DW 就是从这里加载的。它不是完整的 DW:仅持续 6 个月到 6 周,因此它比 OLTP DB 小。

对测试服务器的观察

  • 3 个独立的连接
  • 每个都有一个并发的(和不同的) ALTER TABLE...DROP KEY...ADD INDEX
  • 这 3 个表有 2.5、3.8 和 450 万行
  • CPU 使用率上升到 25%(一个核心被最大化)并且不会更高
  • 3 次 ALTER 需要 12-25 分钟(最小的一次需要 4.5 分钟)

问题

  1. 需要什么设置或补丁才能允许使用多个内核?
    也就是说,为什么 …

mysql innodb performance tuning mysql-5.5

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

创建集中式 DBA 数据库

我们有 200 多台服务器,我正在考虑创建一个集中的 DBA 数据库,在其中记录备份、错误、空间作业并生成关于 SSRS 的报告。我不知道从哪里开始,我非常感谢您的帮助。非常感谢。

sql-server-2008

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

重建索引,DB 现在大小是原来的 10 倍

我有一个大约 15 个演出的 SQL Server 数据库(2008 R2 SP1)。结果发现维护已经有一段时间没有运行了,所以我创建了一个维护计划来重建所有索引,它们非常分散。

工作完成,碎片消失了,但现在数据库超过 120 个演出!我知道它会使用额外的空间来进行所有重建,但是现在工作已经完成,我认为所有空间都将是可用空间,但可用空间仅显示为 3 个演出,因此正在使用 117 个演出即使索引重建作业已完成。

我很困惑,可以使用一些指导,我让数据库恢复到合理的大小,我们没有磁盘空间。

提前致谢!

这是发布的两个查询的结果:

log_reuse_wait_desc 什么都没有

name    TotalSpaceInMB  UsedSpaceInMB   FreeSpaceInMB
LIVE_Data   152             123             28
LIVE_Log    18939           89              18849
LIVE_1_Data 114977          111289          3688
Run Code Online (Sandbox Code Playgroud)

第三个文件是 .ndf 文件,该文件在未使用空间中仅显示 3688,但 111289 用于大约 15 演出数据。

sql-server-2008 sql-server sql-server-2008-r2

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

SQL Server:仅用于系统表的文件组?

我们的企业标准之一是为用户表/索引使用单独的文件组/文件。这被设置为默认值,因此无需限定 CREATE TABLE 语句。

所以它看起来像这样

  • fileid 1 = 系统表,MDF
  • 文件 ID 2 = t-log = LDF
  • fileid 3 = 用户资料 = NDF

这里的任何人都可以帮助我理解为什么强制执行此操作的原始理由吗?


我会坦白说我认为这是巫毒教。上午错了......?

编辑:我知道如何使用文件组来分离索引/分区/存档,以及如何逐步恢复。这个问题是关于在同一卷上为系统表使用单独的文件组。

sql-server filegroups disk-structures

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

更新一个包含数百万条记录的表,已经 4 天了

我目前正在更新一个包含数百万条记录的表,已经 4 天了,查询仍在执行。

我检查了活动监视器,它显示查询正在运行。

在事件日志中根本没有错误。

性能明智:

  • 磁盘 A 中的 Tempdb(850 GB 可用空间)
  • 磁盘 B 中的数据库文件(750 GB 可用空间)
  • 16 GB 内存

请建议我该怎么办?

查询

UPDATE
    dbo.table1
SET 
    costPercentage = ISNULL(t2.PaymentIndex, 1.0),
    t2.TopUp_Amt = (ISNULL(t2.PaymentIndex, 1.0) - 1.0)
    * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00),
    Total_Tariff_Inc_t2 = ISNULL(t2.PaymentIndex, 1.0)
    * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00)
FROM
    dbo.table2 t2
WHERE
    LEFT(dbo.test1.procodet, 3) = LEFT(t2.ProviderCode, 3) COLLATE database_default 
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

为什么在“插入查询”之前“开始事务”会锁定整个表?

我正在使用 SQL Server 2005 Express。

在一个场景中,我在存储过程中Begin TransactionINSERT语句之前添加了命令。当我执行这个存储过程时,它锁定了整个表,所有并发连接都显示挂起,直到INSERT完成。

为什么整个表都被锁定了,我如何在 SQL Server 2005 Express 中解决这个问题?

已编辑

查询如下:

INSERT INTO <table2> SELECT * FROM <table1> WHERE table1.workCompleted = 'NO'
Run Code Online (Sandbox Code Playgroud)

sql-server-2005

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

使用广泛的 PK 与单独的合成密钥和 UQ 之间的性能考虑是什么?

我有几个表,其中的记录可以用几个广泛的业务领域唯一标识。过去,我将这些字段用作 PK,并考虑到以下好处:

  • 简单; 没有多余的字段,只有一个索引
  • 聚类允许快速合并连接和基于范围的过滤器

但是,我听说过一个创建合成IDENTITY INTPK的案例,而是使用单独的UNIQUE约束来强制执行业务密钥。优点是狭窄的 PK 使得二级索引小得多。

如果一个表没有比PK其他指标,我看不出有任何理由赞成第二种方法,虽然在一个大表它可能是最好的假设,指数可能在未来是必要的,因此,有利于在狭窄合成PK . 我是否缺少任何考虑?

顺便说一下,我并不是反对在数据仓库中使用合成键,我只是对何时使用单一的宽泛 PK 以及何时使用窄 PK 加上宽泛的 UK 感兴趣。

database-design primary-key index-tuning unique-constraint

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

SQL Server 不应该支持 RANGE 吗?

作为开发网站并会做一些 SQL Server 的人,SQL Server 应该支持一个简单的子句,表明结果应该只包含特定范围的行,这对我来说似乎是毫无疑问的。例如,第 30 行到第 39 行。

就目前而言,当他们的主要关注点不是 SQL 时,在 SQL Server 中实现分页实际上有点超出了许多 Web 开发人员的能力。

此外,它将大大简化由于连接和其他条件而可能已经很复杂的查询。

最重要的是,我认为随着时间的推移,这样的条款可能更有可能在内部得到优化,因为逻辑将完全在 Microsoft 的控制之下。

前段时间我在另一个论坛上提出了这个问题,许多答复似乎表明这不是可取的。

鉴于任何现有的分页技术都将保持不变,有什么可能的原因不添加这样的子句?对于像我这样的人来说会好得多。

任何人都可以说微软没有这样做的充分理由吗?

sql-server sql-server-2012

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

MySQL 复制错误

我在 Slave 上收到错误消息:

无法在表 mydatabasename.atable 上执行 Write_rows 事件;密钥“PRIMARY”的重复条目“174465”,错误代码:1062;处理程序错误 HA_ERR_FOUND_DUPP_KEY; 事件的主日志 mysql-bin.000004, end_log_pos 60121977

由于我直接从 master 获取更新,所以为什么会发生这种情况。

我们如何以有效的方式处理这个问题,以便从站上没有数据丢失。我不想再次设置整个复制以保持数据完整性。

谢谢..!

mysql replication

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

在向用户显式授予选择视图后,对(视图)对象的 SELECT 权限被拒绝

我有一个名为“1098Statement”的视图的数据库我们正在测试用户名为“appuser”的应用程序。

我尝试了以下解决方案来在视图上授予选择权并不断出错:

  1. 授予选择视图
  2. 将用户添加到 db_datareader
  3. 将用户添加到已在视图上授予选择权的数据库角色

    消息 229,级别 14,状态 5,第 2 行 对象“1098Statement”、数据库“mydb”、架构“dbo”的 SELECT 权限被拒绝。

他们都没有工作。

是否有任何人可以提供有关解决此问题的任何指示。

我唯一剩下的想法是检查

  1. 用户帐户,以查看对用户或帐户所属的任何角色是否有任何明确的“拒绝”限制。
  2. 检查视图以查看是否有任何明确的拒绝

sql-server-2005 security

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