有谁知道谷歌或雅虎如何针对非常非常大量的数据执行关键字搜索?他们为此使用了什么样的数据库或技术?
这需要几毫秒的时间,但它们有超过 10 亿页被索引。
我有一个运行一些命令的存储过程。我不希望这些命令被包装在存储过程的事务中。如果第 4 个命令失败,我希望第 1、第 2 和第 3 个命令保持不变,而不是回滚。
是否有可能以这样一种方式编写存储过程,使其不全部作为一个大事务执行?
我负责在一个项目上创建一个数据库。我们有很少有值的字段(每 10,000 条记录中有 1 个),我正在尝试找出将其存储在数据库中的最佳方法。
据我所知,我有 3 个选择:
还有其他我没有考虑过的选择吗?
我正在尝试找出每种方法的优缺点。据我所知,1 将是最简单的,而 2 将占用最少的空间,但我正在努力为 3 找到许多资源。
我有一个在 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) 我正在运行一个更改表,更改包含近 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)。
我猜我最好的办法是创建一个具有新布局的新表,将数据迁移到该表中,删除原始表,然后重命名新表以匹配旧表的名称。如果是这种情况,如何最好地构建这些命令?
我们系统的计划停机时间目前不是问题,因此此操作可以根据需要进行。