我已经看到一些专用的 MySQL 服务器,它们只使用一个内核。我比 MySQL 的 DBA 更擅长开发,所以需要一些帮助
服务器非常庞大,具有 OLAP/DataWarehouse (DW) 类型的负载:
注意:最大的 DB 是从 OLTP DR 服务器复制的 DB,DW 就是从这里加载的。它不是完整的 DW:仅持续 6 个月到 6 周,因此它比 OLTP DB 小。
ALTER TABLE...DROP KEY...ADD INDEX我们有 200 多台服务器,我正在考虑创建一个集中的 DBA 数据库,在其中记录备份、错误、空间作业并生成关于 SSRS 的报告。我不知道从哪里开始,我非常感谢您的帮助。非常感谢。
我有一个大约 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 演出数据。
我们的企业标准之一是为用户表/索引使用单独的文件组/文件。这被设置为默认值,因此无需限定 CREATE TABLE 语句。
所以它看起来像这样
这里的任何人都可以帮助我理解为什么强制执行此操作的原始理由吗?
我会坦白说我认为这是巫毒教。上午我错了......?
编辑:我知道如何使用文件组来分离索引/分区/存档,以及如何逐步恢复。这个问题是关于在同一卷上为系统表使用单独的文件组。
我目前正在更新一个包含数百万条记录的表,已经 4 天了,查询仍在执行。
我检查了活动监视器,它显示查询正在运行。
在事件日志中根本没有错误。
性能明智:
请建议我该怎么办?
查询
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 2005 Express。
在一个场景中,我在存储过程中Begin Transaction的INSERT语句之前添加了命令。当我执行这个存储过程时,它锁定了整个表,所有并发连接都显示挂起,直到INSERT完成。
为什么整个表都被锁定了,我如何在 SQL Server 2005 Express 中解决这个问题?
已编辑
查询如下:
INSERT INTO <table2> SELECT * FROM <table1> WHERE table1.workCompleted = 'NO'
Run Code Online (Sandbox Code Playgroud) 我有几个表,其中的记录可以用几个广泛的业务领域唯一标识。过去,我将这些字段用作 PK,并考虑到以下好处:
但是,我听说过一个创建合成IDENTITY INTPK的案例,而是使用单独的UNIQUE约束来强制执行业务密钥。优点是狭窄的 PK 使得二级索引小得多。
如果一个表有没有比PK其他指标,我看不出有任何理由赞成第二种方法,虽然在一个大表它可能是最好的假设,指数可能在未来是必要的,因此,有利于在狭窄合成PK . 我是否缺少任何考虑?
顺便说一下,我并不是反对在数据仓库中使用合成键,我只是对何时使用单一的宽泛 PK 以及何时使用窄 PK 加上宽泛的 UK 感兴趣。
作为开发网站并会做一些 SQL Server 的人,SQL Server 应该支持一个简单的子句,表明结果应该只包含特定范围的行,这对我来说似乎是毫无疑问的。例如,第 30 行到第 39 行。
就目前而言,当他们的主要关注点不是 SQL 时,在 SQL Server 中实现分页实际上有点超出了许多 Web 开发人员的能力。
此外,它将大大简化由于连接和其他条件而可能已经很复杂的查询。
最重要的是,我认为随着时间的推移,这样的条款可能更有可能在内部得到优化,因为逻辑将完全在 Microsoft 的控制之下。
前段时间我在另一个论坛上提出了这个问题,许多答复似乎表明这不是可取的。
鉴于任何现有的分页技术都将保持不变,有什么可能的原因不添加这样的子句?对于像我这样的人来说会好得多。
任何人都可以说微软没有这样做的充分理由吗?
我在 Slave 上收到错误消息:
无法在表 mydatabasename.atable 上执行 Write_rows 事件;密钥“PRIMARY”的重复条目“174465”,错误代码:1062;处理程序错误 HA_ERR_FOUND_DUPP_KEY; 事件的主日志 mysql-bin.000004, end_log_pos 60121977
由于我直接从 master 获取更新,所以为什么会发生这种情况。
我们如何以有效的方式处理这个问题,以便从站上没有数据丢失。我不想再次设置整个复制以保持数据完整性。
谢谢..!
我有一个名为“1098Statement”的视图的数据库我们正在测试用户名为“appuser”的应用程序。
我尝试了以下解决方案来在视图上授予选择权并不断出错:
将用户添加到已在视图上授予选择权的数据库角色
消息 229,级别 14,状态 5,第 2 行 对象“1098Statement”、数据库“mydb”、架构“dbo”的 SELECT 权限被拒绝。
他们都没有工作。
是否有任何人可以提供有关解决此问题的任何指示。
我唯一剩下的想法是检查
sql-server ×4
mysql ×2
filegroups ×1
index-tuning ×1
innodb ×1
mysql-5.5 ×1
performance ×1
primary-key ×1
replication ×1
security ×1
tuning ×1