已经数十年了。 为什么数据库不管理自己?

2021-03-18 03:34:46

本月,要纪念Brentozar.com成立20周年,我正在踩回来看看大局,而不是关于数据库问题&amp的博客;像我通常这样的解决方案。

保护它 - 这听起来很容易,但也包括设计正确的高可用性和灾难恢复解决方案

设计正确的表,并根据我们想要查询数据的方式对其进行索引

我们还在做所有这些东西。这只是我们是洞穴 - 使用岩石的工具,而不是用手敲手。

哦,当然,他们正在营销,他们已经提出了更好的东西,但是当你开始用手指擦拭产品时,湿漆擦掉,你看到下面的传统问题。

让我们拿一些真的很简单:让我们建立一个新的Azure SQL DB:

但是,屏幕上具有最大字体大小的数字:150.您的VCORE和数据大小的选择确定分配的日志空间,并且Microsoft将其以粗体置于粗体,但实际上无法直接控制它。如果您想要更多日志空间,则必须增加数据空间。

所以如果重要的是要粗体,我们必须知道它的正确号码,对吗?

没有。在Azure SQL DB中,空间消耗是仅由数据库服务器控制的东西,而不是由管理员控制。您无法通过更频繁地备份来修复它:Microsoft控制您的备份。微软正在暗示,“哟伙伴,你最好知道你的交易是多大的,并且你的奖学师迟到了,如果你得到这个错误,请插入/更新/删除将失败。”他们应该通过加速数据库恢复来解决这个问题,文档所说的是在Azure SQL数据库中,甚至无法关闭 - 但它仍然是一个问题,或者它不是最大的数字字体屏幕。甚至更糟糕,如果它是固定的,为什么它会如此突出地展示,建议他们需要构建一个更大的服务器来处理不再重要的日志文件大小?

我们仍然使用微操纵事务日志尺寸来拧紧,试图不耗尽磁盘空间。在场所,我们很久以前学习了轻松的修复:只需将日志文件尺寸合理地尺寸,然后离开自动化。如果发生一个五十的数据库恰好有一个失控的交易,他们可以暂时生长。我们会处理它。

忘记存储 - CPU或内存的突然要求呢?无要的,自我缩放的数据库,如AWS Aurora无要和Azure SQL DB无操作系统表示他们通过自动缩放解决了它。这不是解决问题 - 它只是无限的配置。当某些机器人刮擦您的网站或使用n + 1 bug时,您唤醒了100,000美元的云票据。

我知道一只手,因为我们自己的SQLContantCare®产品建于Aurora。去年,我博客关于一个数据库视图如何花费50美元/天数月,你知道什么?我今天再次在同一个准确的船上。我们的数据库成本逐渐蠕动,因为我们部署了越来越多的新功能查询,并且一些新查询并未调整。我在我的积压中有一个物品,几周去做更多的数据库调整,我们的极光成本悄悄地爬到200美元/天。我不得不去开放的AWS性能见解,找到所涉及的查询,调整它们,检查它们进入GitHub,让Richie修复单元测试,然后部署它。

自配置数据库?甚至甚至关闭:Microsoft SQL Server 2019及其云等效项,Azure SQL DB,仍然以相同的成本阈值运送并行性设置,每个Freakin的设置核对表仍然会告诉您手动修复。每一个版本,似乎我们为一个或两个配置设置抛出骨骼,所以营销团队可以说数据库变得越来越自结。这很棒,但是在这个速度下,它将在设置后检查表可以消失 - 如果有的话,因为供应商不断增加需要广泛调整的功能和拨号。

自我修补?好吧,有点,但只能以最糟糕的方式。在Azure中,你没有得到一个真实的变形图,而且在他们对生产服务器或何时何时开始之前,您就不会进行测试。就在本月,在2021年3月,Azure SQL DB终于宣布您可以选择哪些窗口,他们将用于维护,以便将您的服务器放在下降,并在他们会之前提醒通知。您可以选择:

而已。那些是你唯一的选择。并且该功能仅在预览中,并且仅在选择区域中。如果供应商真正关心数据库管理员,那么这种东西就不会像这样进入生产。

观众中的有人会说,“Azure弧度帮助吗?”嗯,它的声明它在意义上,它将您的内部部署SQL服务器和Azure实例放入同一Azure控制面板中,为您提供自拨,并具有基于策略的管理。考虑到微软的基于策略管理和实用控制点的曲目记录,这两者都是普遍宣布的功能,在没有获得修复或改进的情况下悄然死亡,我会等待看看这是另一个是另一个on-done的土耳其吗? 。

正如您认为的那么重要,您可能从未编写过数据库许可或云服务。

您有工作的原因是您的雇主实现了一个数据库,它随着时间的推移而增长,而且超出了宣传册的自我管理功能。在制定数据库选择后,您被录用了。不,你真的无法影响未来的购买决策,因为该船已经航行:贵公司挑选了一个持久层,而且在挑选新产品的额外持久层时,你只会是其中一个许多人坐在桌旁。

在开发人员在大多数情况下,在大多数情况下,它们并不足够多于多个数据库平台。他们要么熟悉一个,那就是他们选择的那个,或者他们不熟悉任何一个,他们被迫根据供应商的营销材料进行选择,他们的朋友说,他们阅读的内容HN,或一些无意义的数据库排名网站。

当exputives做出数据库决策时,他们要么从EnterpriseReady.io这样的功能列表中工作,要么寻找审计,基于角色的访问,Active Directory集成,或者......他们从供应商的宣传册上工作,自我管理只是另一个功能在一个功能列表中。

我不是以消极的方式意味着这!这就是我们购买电器或汽车或笔记本电脑的方式。我们对我们所需要的功能造成了粗略的想法。产品很少有我们想要的所有功能 - 至少在价格点之前我们愿意付钱 - 所以我们必须妥协。我们可能会接受一个功能的半烘焙版本,因为我们想要另一个特色如此糟糕。

在2021年,每个数据库的宣传册都有“自我管理”拍摄的宣传册,每个供应商都将显示足够的演示到蒙蔽非DBA。 “自我管理”才能销售 - 就像“安全”或“表演者”或“可扩展”一样。每个人都使用这些关键字。他们并不意味着什么。

更糟糕的是,自我管理只是人们正在寻找的一个功能。每次数据库供应商在另一个功能上打开时,该功能都具有拨号和切换以配置它 - 并且当该功能是全新的时,必须手动配置这些拨号和交换机。从来没有一个最好的实践文件 - 该功能必须先发货,在真实世界中学习最佳实践之前,我们都写下文档来互相告诉对方如何设置拨号和交换机。

想要证明吗?查看Couchbase.com的主页。看看他们吹捧的各种功能。他们强调了产品的力量,赋予你做各种各样的东西 - 但你仍然必须实际做那些东西,就像它一样,监控&调整查询,配置安全性并配置所有设置。它根本不是自我管理 - 无所谓,因为人们喜欢它。他们将公开超过30亿美元的估价。市场所说,功能是钱的特点。

当然,供应商可以说一个全新的功能是自我管理的 - 但再次擦掉它的手指,阅读发行说明,运行边缘案例测试,你很快就找到了未记录的拨号和交换机需要刚刚转动,以便使这只猪飞。

他们必须。供应商处于对其他供应商的竞争中,赛车到船舶发货,没有其他人拥有,或者跟上其他人已经发货的功能。

十年前,当微软首先在可用性群体上提供时,我是欣喜若狂的。我正在进行大量的生产数据库管理工作 - 确保SQL服务器是高度可用性和受到良好保护的 - 我看到可用性组作为实现这一目标的更好方法。

好消息是,Microsoft将资源倒入AGS,为他们添加了各种功能。更多副本。跨数据库事务支持。可用性组跨越多个Windows群集。

坏消息是,这些功能不仅是自我管理的,他们实际上是无法管理的:文件是可怕的,GUI是不存在的,该死的东西不断地疯狂意外的方式破坏了。 (出于有趣的详细信息,请阅读TarynPivots.com上的过去的博客文章,堆栈溢出的DBA。)

当微软表示他们将可用性组带到Linux时,我说好,我给予,不再,超时了。我来看看SQL Server高可用性作为Sisyphean任务:我永远无法真正完成那个悲惨的工作,即使我以为我已经完成了,一些新的惊喜将我平坦淘汰了。更糟糕的是,这些惊喜总是在周末,在假期,当我真正想做的时候都放松了。

如果您想要学习可用性组,Edwin Sarmiento即将开启他班级的新轮。他每年只有少数这些,它是咨询,教练和培训的混合动力。在这里了解更多信息。

我选择从生产DBA发展到发展dba。这些天,我的咨询工作和我的培训课程专注于解决性能紧急情况。我至少可以提前安排那些参赛,因为公司知道他们的表现慢慢变得更糟,我们可以在工作日,营业时间一起工作,以便转变各地的事情。 (与生产中断相反,当我刚刚制作一个新的杜松子酒和池塘时,总是在最糟糕的时间里击中。)

生产DBA工作仍在那里,介意你,我每个月都获得来自人们的电子邮件,要求我录制关于如何做的新培训课程。我只是公寓对那项工作不感兴趣,而且我对其进行培训不感兴趣。

所以考虑到这一点,我将我们的基础数据库管理课程和YouTube上的高级DBA级别进行了自由的基础。他们是年长的课程,他们没有最好的音频和amp;视频质量,但我宁愿让他们向公众提供帮助,帮助那些需要的人。希望有所帮助 - 我也希望数据库供应商能够更认真地开始自我管理的事情,以便生产DBA仍然必须处理这种混乱。

在我的下一篇文章中,我会谈论我认为未来10年的数据库将带来什么,以及如何影响我们的工作职责和职业前景。