如果我继承了当时已经增长到 400GB 1 MB 块的数据库。离线碎片整理是清除所有物理碎片的唯一方法。我遇到的另一个问题是数据和日志文件混合在错误的 RAID 驱动器上。
我可以通过备份数据库来用 1 块石头杀死 2 只鸟,删除它并使用 WITH MOVE 恢复它以将文件放在正确的 RAID 驱动器上。这会消除物理碎片吗?
在不同文件组上为操作系统创建数据库的优缺点是什么?我知道如果您想让数据库的静态部分在其他部分(位于不同的文件组)可以恢复时保持在线状态,这很有用。然而,这种情况对我们没有用(根据系统的性质)。
根据您的经验,如果在不同的文件组上创建数据库,我们还能获得其他好处吗?如果是这样,分配文件组的最佳做法是什么?
非常感谢。
可能大家都知道,NTFS 在设计上有一个缺陷,它会在文件系统使用过程中导致碎片化。另一方面,MSSQL 使用文件作为数据库存储方法,而且典型的做法是将几个大的数据库放在同一个文件系统上。数据库增长给出了碎片化的完美例子,它肯定会对 SQL 服务器性能产生一些影响。
问题:是否有关于文件系统碎片对数据库/MS SQL Server 性能影响的任何信息?或者是否存在用于 MS SQL Server 数据库存储的 NTFS 优化的隐藏专有层?SQL 服务器数据库真的是 NTFS 或 OS 上的普通文件将其视为特殊对象吗?如果在 NTFS 上工作的磁盘 checkdisk 更改了某些文件系统结构怎么办?在典型情况下,它可能会更改文件系统数据的内容(一旦我在此期间丢失了 Oracle 数据库,在 BSOD 重新启动检查后自动检查。是的,它是在物理突袭中。是的,它是自动检查磁盘文件系统修复,它破坏了回滚日志)。是否有任何已知的安全机制可以防止 MS SQL 发生此类事故?
有已知的原始分区存储技术,但 MSSQL 没有内置这种技术。
我不想就明显的陈述展开激烈的战争,问题是关于技术细节以及 MS 产品添加的两个之间的关系:NTFS 和 MS SQL Server。
我已经从 amazon RDS 上的 mysql 中删除了多个数据库(架构),但没有释放存储空间,我还应该做些什么来释放存储空间?
我有一个总存储量为 15GB 的 mysql 数据库。添加多个数据库(从另一个 mysql 数据库复制)并删除它们后,可用的可用存储空间为 0。我不能简单地删除 RDS 实例,因为此实例上还有另一个我需要它的数据库。但我 100% 确定数据库没有使用 15GB 的存储空间。
我已经在其他线程上阅读过这个问题,但大多数解决方案都在谈论删除所有数据并关闭服务器,因为数据库一直在使用,我无法这样做。
在 .NET WebForms 项目中,我们希望在数据库中记录一年中的某些操作。估计日志的最大大小为 1GB(每天 20.000 条记录,包含 10 个字段),每天最多可能被查询 2 次。
我们正在讨论是否建议将日志记录表放在一个新数据库中(甚至可能在一个单独的服务器上),或者在我们现有的数据库中使用一个新表。
使用我们现有的数据库的好处是我们不需要在代码中建立新的连接,也不需要管理一个新的数据库。缺点可能是数据库无法处理它。
你有什么见解?你有什么建议吗?
为什么 MySQL 将 blob 存储在直接表中而不是放在一边,以便如果它需要读取相应的内容,它将读取到一边的内容?本质上,它会创建自己的文件,该文件在文件文件夹类型的体系结构中不受除自身之外的所有内容的影响,以便更容易/更快地写出 blob 链接。
环境是 SQL Server 2014 Enterprise Edition,由 CommVault Simpana 管理的 NetApp 存储。我们在一个实例上设置了 100 个 dbs,所有 TLog 都在同一个卷上。
SAN 管理员每天设置 4 次 TLog 备份,每晚对 TLog 备份卷进行一次完整快照。保留期为 14 天,因此 TLog 备份卷在任何时候都有 14 个 TLog 快照。
最近,TLog 备份卷几乎耗尽空间,因为完整快照正在快速增加。我们将此归因于年终数据处理,导致大量块更改。预计这种上涨不会持续,但事实并非如此。
SAN 管理员表示,他无法知道哪些 TLog 文件导致了块更改的增加以及更大的快照。
我知道文件和块之间存在脱节,但我认为您可以通过 Simpana、NetApp 或 PowerShell 连接这些点,以找出导致大块更改的 TLog。
任何建议,将不胜感激。
谢谢
通常,数据库引擎会满足一些请求,并且任何修改都必须保持持久性(您称之为持久性)。如何确保/假设持久性?对 HW/OS 有哪些要求?
特别,
服务器什么时候进行刷新?是否会发生 OS 刷新命令传播到某个中间缓冲区而不传播到 HDD 盘的情况?今天,许多存储制造商和接口都支持乱序写入缓冲区。有什么影响?:您是否应该采取任何措施来抵消它?磁盘上的 ram 缓冲区重要吗?是否需要任何 UPS(以及哪些)来支持 RAM 缓冲区?
如果我有自己的“数据库”——将我的数据存储在纯文件中,我应该保证什么?我认为 DB 做得最好。什么是最好的,以便我可以做同样的事情来保证数据不会丢失?有简单的程序吗?是否有教授安全存储的课程?
每条记录重 52 字节,如果有人拥有所需的存储空间,在今天的技术中是否可能?什么样的数据库可以保存数据并可以检索它。
一个示例记录:
(5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU
,1MsHWS1BnwMc3tLE8G35UXsS58fKipzB7a
,1Q1pE5vPGEEMqRcVRMbtBK842Y6Pzo6nK9)
Run Code Online (Sandbox Code Playgroud)
记录数为 115792089237316195423570985008687907853269984665640564039457584007913129639936
我试图了解由执行某些表扫描的 SQL 语句引起的缓存流失。
假设 LRU 缓存,如果某事正在执行 400K 逻辑 IO,则流过多少内存(IO 块大小 * 逻辑 IO)。
此外,我试图了解如何获取关于顶级逻辑 IO SQL 语句的报告并获取这些产生的物理 IO。
鉴于此,我的问题是:
今天我必须重新启动一个项目,由于业务(房地产)的特殊性,我将不得不为房子/公寓/机库/wahetever 存放一张桌子。但是一行可以包含 1000 多个标准,因此,列(它有游泳池?壁炉?直升机停机坪,地下掩体?等等......
但是你可以猜到,这些行中的大多数都等于 null(谁家里有直升机停机坪或掩体?很少有人......)
因此,我想知道您有什么想法可以最有效地存储它?与哪个数据库?磁盘空间、速度、内存使用量等......而且还可以让编码器尽可能轻松地取回数据(例如,可以选择拆分为多个表,但可以选择获取数据)这样的架构很烦人)
另外,我更愿意保留一个关系数据库(mySQL、postgres ...),但我愿意接受建议。
谢谢你的建议!
storage ×11
sql-server ×6
mysql ×2
amazon-rds ×1
architecture ×1
blob ×1
delete ×1
filegroups ×1
innodb ×1