小编Mat*_*les的帖子

大型搜索引擎使用哪些数据库技术?

有谁知道谷歌或雅虎如何针对非常非常大量的数据执行关键字搜索?他们为此使用了什么样的数据库或技术?

这需要几毫秒的时间,但它们有超过 10 亿页被索引。

database-design full-text-search

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

不要将事务用于存储过程

我有一个运行一些命令的存储过程。我不希望这些命令被包装在存储过程的事务中。如果第 4 个命令失败,我希望第 1、第 2 和第 3 个命令保持不变,而不是回滚。

是否有可能以这样一种方式编写存储过程,使其不全部作为一个大事务执行?

sql-server stored-procedures

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

何时使用 XML 数据类型

我负责在一个项目上创建一个数据库。我们有很少有值的字段(每 10,000 条记录中有 1 个),我正在尝试找出将其存储在数据库中的最佳方法。

据我所知,我有 3 个选择:

  1. 在表中为每个额外值添加一列
  2. 添加一个链接表,该表引用原始表并且仅在我们需要存储值的地方有记录
  3. 使用原始表中的 XML 数据类型并将所有值存储在此。

还有其他我没有考虑过的选择吗?

我正在尝试找出每种方法的优缺点。据我所知,1 将是最简单的,而 2 将占用最少的空间,但我正在努力为 3 找到许多资源。

sql-server-2008 xml

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

SQL Azure 碎片/数据库大小

我有一个在 SQL Azure 上运行的数据库,目前为 280mb。它是我们即将投入生产的系统的测试数据库,因此数据经常被批量删除然后重新创建。

当我在 SQL Azure 上使用“复制”功能时,它创建的新数据库只有 156mb。当运行查询以显示每个表使用了多少数据时,看起来每个表的大小几乎是过去的一半。

我已经确定这将归结为数据碎片,但我的问题是我能做些什么?微软似乎没有对数据本身进行任何维护,而且由于它是按使用付费的模式,当我没有 1GB 的数据时,我最终会达到 1GB 的限制!

作为参考,这是我运行以显示表大小的查询:

select sys.objects.name, (reserved_page_count * 8.0 / 1024)
from sys.dm_db_partition_stats, sys.objects
where sys.dm_db_partition_stats.object_id = sys.objects.object_id
Run Code Online (Sandbox Code Playgroud)

fragmentation azure-sql-database

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

在更改表期间耗尽事务日志空间

我正在运行一个更改表,更改包含近 3000 万行的表上的列,SQL Azure 在大约 18 分钟后失败,说 The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.

我猜不可能将其分解为一次修改更少的行,所以我想知道对数据库进行此更改的选项是什么。SQL Azure 不允许我更改事务日志的大小(限制为 1GB)。

我猜我最好的办法是创建一个具有新布局的新表,将数据迁移到该表中,删除原始表,然后重命名新表以匹配旧表的名称。如果是这种情况,如何最好地构建这些命令?

我们系统的计划停机时间目前不是问题,因此此操作可以根据需要进行。

alter-table azure-sql-database transaction-log

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