小编RLF*_*RLF的帖子

使用模式 + 文件组或完全独立的数据库(同一实例)对一些大表进行分区?

我有以下挑战:

我有一个暂存数据库,其中包含几个大表(在 SSD 上),但我开始用完 SSD 上的空间。我使用 SQL Server 2014 BI-Edition(= 关系引擎的标准版),因此开箱即用的表分区不可用。我的方法是将数据拆分到单独的表中,然后将它们连接到一个视图中。

数据本身(大部分)写入一次,然后只能读取。

下面两个建议的更好的解决方案是什么?为什么?

解决方案 A:使用文件组将数据移动到不同的磁盘:

  • 在单独的磁盘(非 SSD、RAID5)上创建两个新文件组
  • 创建多个表(例如,每季度一个)并根据某些规则将旧数据移动到这些表中(例如移动 6 个月之前的数据)
  • 一个文件组是只读的,另一个是读写的。更多的当前数据驻留在读写文件组中,而较旧的数据位于只读文件组中
  • 为所有表创建相同的索引(相同的列)
  • 使用视图透明地访问所有数据

方案B:使用数据库保存历史数据

  • 以或多或少相同的方式实现,但添加一个数据库(在同一实例中)作为附加层

感谢您分享您的想法和建议。

database-design sql-server sql-server-2014

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

是否可以更改 MSSQL 中的 family_guid?

所以我在尝试迁移到亚马逊 RDS 时遇到了一些数据库问题

我们有大约 20 个数据库,它们都是其他数据库的衍生物,它们都共享相同的 family_guid,因为它们基于其他数据库的备份。问题是亚马逊不允许您恢复具有另一个相同 family_guid 的数据库,即使它们是两个单独的数据库。这就是我的问题所在,是否可以更改 guid 或者我不走运,需要对这些数据库进行一些导出/导入。

sql-server t-sql

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

删除大量数据后回收数据文件空闲空间

我是一个偶然的 DBA。我们有一个托管 10 个数据库的 sql 集群。突然间,其中一个数据库的大小从 100GB 急剧增加到 250GB。当我们检查数据文件时,它的大小在过去几天中增长了两倍多。我们识别了这些表并截断了数据并删除了 130GB 的数据。数据文件仍然显示 250GB。我们如何回收空间?

非常感谢您的帮助。

sql-server-2008-r2

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

为每行和每列生成随机数

我将在我的数据库中编辑一些假数据。但是如果我为每一行和每一列生成随机数,它就没有我想要的那么随机。结果可以在下图中看到。

没有随机数

这是我使用的代码:

WITH x AS 
(
    SELECT mintwee, mineen, nul, pluseen, plustwee 
    FROM Topic
)
SELECT mintwee = CAST(RAND()*100 AS INT),
       mineen = CAST(RAND()*100 AS INT), 
       nul = CAST(RAND()*100 AS INT),
       pluseen = CAST(RAND()*100 AS INT),
       plustwee = CAST(RAND()*100 AS INT)
FROM x
Run Code Online (Sandbox Code Playgroud)

和这个:

WITH x AS 
(
    SELECT 
        mintwee = CAST(RAND()*100 AS INT), 
        mineen = CAST(RAND()*100 AS INT),
        nul = CAST(RAND()*100 AS INT), 
        pluseen = CAST(RAND()*100 AS INT), 
        plustwee = CAST(RAND()*100 AS INT)
    FROM Topic
)
SELECT mintwee, mineen, …
Run Code Online (Sandbox Code Playgroud)

sql-server random

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

这是使用主键和外键将父表和子表与逻辑数据而不是父表链接的正确方法吗

我有两个表,一个是 product,它是一个带有一个主键的父表,我有另一个产品的子表,它是一个 product_details 表。但是子表使用逻辑数据而不是外键与父表(产品)链接,因为我们在编码端的java代码的帮助下建立这种关系,而不是依赖于数据库,这使得它变得紧密夫妇。为了避免表之间的紧密耦合,我们将主键值存储在子表中。

请参考这张图片,其中包含在产品和产品详细信息表之间创建逻辑关系的数据。

在此处输入图片说明

脚本是:

CREATE TABLE `tbl_product` (
  `product_id` varchar(200) NOT NULL,
  `product_details_id` varchar(200) DEFAULT NULL,
  `currency` varchar(20) DEFAULT NULL,
  `lead_time` varchar(20) DEFAULT NULL,
  `brand_id` varchar(20) DEFAULT NULL,
  `manufacturer_id` varchar(150) DEFAULT NULL,
  `category_id` varchar(200) DEFAULT NULL,
  `units` varchar(20) DEFAULT NULL,
  `transit_time` varchar(20) DEFAULT NULL,
  `delivery_terms` varchar(20) DEFAULT NULL,
  `payment_terms` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



 CREATE TABLE `tbl_product_details` (
  `product_details_id` varchar(200) NOT NULL,
  `product_id` varchar(200) DEFAULT NULL,
  `product_name` varchar(50) DEFAULT NULL,
  `landingPageImage` varchar(100) DEFAULT …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-key database-design primary-key

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