开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2360人左右 1 + 2 + 3 + 4 +5 + 6 + 7)(1 2 3 4 5 群均已爆满,请不要在问有没有位置谢谢)
这段时间有一个问题在困扰,windows下的数据库产品表现的不优,这包含了MySQL,PostgreSQL,MongoDB等数据库产品,在我从业的经验中,MySQL和PostgreSQL与windows 之间的恩怨就没有停止过.
在开始说问题之前,我们先来把一些常见的windows故障后的系统错误Event ID说一下
事件 ID 41:系统在没有干净关闭的情况下重新启动。当系统停止响应、崩溃或意外断电时会出现此错误。
事件 ID 1074:当某个应用程序(如 Windows 更新)导致系统重启,或用户主动启动重启或关机时,会记录此事件。
事件 ID 6006:记录为干净关闭。它会显示消息:“事件日志服务已停止。”
事件 ID 6008:记录为非正常关闭。它会显示消息:“上一次系统关闭于时间日期,属于意外关闭。”
在你数据库无法启动后,你首先就要看你的Windows的在上次到底遭遇了什么,什么原因导致windows 系统crash
问题1: 脆弱的crash后的数据库无法启动问题 !
这点我是有相关的很多的工作经验的,给予MySQL8.0, PostgreSQL 10版本在Windows Servers 上安装并工作中,基于断电,或者突发性的UPS问题等,导致的主机通电后,无法启动数据库的问题之前基本每个月都有人和我这里讨教故障的原因.
这里我大部分发现的原因是数据文件受损,这多发生在MySQL上,PG也有一些类似的问题,这两个数据库的原理还是有不一样的地方,那么为什么在windows上突发系统故障后,都出现一些在LINUX不多见的数据库系统无法启动的问题?
罪魁祸首: NTFS 文件系统,大家都知道WINDOWS上无论您是客户版本的Windows或是Windows Server的版本他的文件系统都是NTFS,其中NTFS文件系统在频繁的文件写入和删除操作后非常容易产生磁盘碎片,导致文件分散在磁盘的不同位置,碎片化增加了文件系统的复杂性,同时增加了断电时数据损坏的风险.这可能也是 MySQL和PostgreSQL 为什么在Windows上,怎么就这么容易坏,多个位置在写入数据的时候尚未同步写入磁盘,所以出现问题后,恢复也比较麻烦. 这里NTFS是使用日志来记录系统的变化,确保发生故障后能进行恢复,但断电的时候日志文件尚未完整写入,或恢复的时候,发生更多的错误,那么恢复数据就困难了.
这里总结一下,NTFS文件系统虽然在设计上考虑安全性和恢复机制,但NTFS最初考虑也是为了普通windows系统来进行设计的,但在突发的情况下,写缓存丢失,复杂元数据更新,实物终端以及磁盘碎片等问题都可能是导致服务器crash后出现数据库问题的原因.
对 NTFS 想进一步了解的同学,可以访问如下网址https://www.techtarget.com/searchwindowsserver/definition/NTFS
问题 2 MySQL PostgreSQL,设计支出对于windows 版本的数据就没有打算如Linux 那么稳定
关于这点我非常确认的是PostgreSQL,曾在去年翻译过这个视频,并写成文章,里面的"安德鲁"非常明确的说明了PostgreSQL在windows上的IO偷懒了,他们根本就不熟悉windows,所以整体的数据的写入完全依赖接口,剩下的就是听从windows的安排和命运. (三期的翻译,在下面可以自己看)
Postgresql IO 对于PG的 过去,现在 , 未来 (1 过去和我们曾经解决的问题)
Postgresql IO 对于PG的 过去,现在 , 未来 (2 --面临的挑战和解决方案)
Postgresql IO 对于PG的 过去,现在 , 未来 (3--直面问题与结果展示和PG16新东西)
MySQL数据库,这里并未找到MySQL官方的一些对不同操作系统上MySQL的性能比对,但MariaDB却曾经公开, Linux上的MariaDB比在windows上要提高性能20% 30%.同时percona 和 scaleGrid 也测试过MySQL在windows上要低10-30%的性能对比LINUX 系统上的MySQL.
同时我们在对PostgreSQL和MySQL两个数据库的配置参数中,MySQL有更多依赖LINUX系统的参数,如 innodb_flush_method 等,PostgreSQL的灵活性也在Windows上无法发挥,比如我们想随意添加extension ,这点我到现在也不知道在windows上的PG 如何操作.
PostgreSQL和MySQL很多的功能都在windows上被阉割了,个人看PostgreSQL可能受到的影响更多一些.终究这么灵活的PostgreSQL,到了windows和坐进了监狱差不多.
3 没有众多人员使用的产品,要完善是困难的
这点从我整理MySQL 8.0, PostgreSQL 12 13 14 15 16等版本的BUG FIXED,就可以看出来,PostgreSQL在针对windows系统的bug fixed 内容非常的少,基本上5%左右的bug fixed 是在windows上的,MySQL在整理的时候更是比较少的看到针对windows的patching.
从反馈问题的角度来说,更专业的人员都在linux系统上使用数据库,在windows上使用数据库的情况比较少,同时二开的各种软件和开源的软件都是在LINUX 上的,windows是和尚头上的虱子,显而易见的没有.
所以 windows出现任何的问题你都不要认为有人给你,踩过雷了,很多时候你就是那个踩雷的.
综上所述,数据库软件除了MSSQL,在windows上如鱼得水,(其实也不是,LINUX上的 SQL SERVER跑的更快,这是微软自己说的),其他的数据库产品如果是高并发的方式使用,那么你的唯一选择是LINUX 而不是WINDOWS.
置顶文章:
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
PostgreSQL 软肋 “最大连接数” 到底是不是问题?
PostgreSQL 具有createdb的用户无法创建数据库的原因(之一)
PostgreSQL 同样的语句 一会快 一会慢到底怎么回事,
MongoDB 系统IOPS 告警系统处于崩溃,优化语句从1秒优化到1毫秒解决问题
专访唐建法-从MongoDB中国第一人到TapData掌门人的故事
MySQL 8.0x 到 9.0均可能崩溃--云厂商开发指责 MYSQL不测试就推新版本?
往期热门文章:
PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PolarDB Serverless POC测试中有没有坑与发现的疑问
临时工访谈:PolarDB Serverless 发现“大”问题了 之 灭妖记 续集
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一
PolarDB for PostgreSQL 有意思吗?有意思呀
PolarDB Serverless POC测试中有没有坑与发现的疑问
MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
临时工访谈:从国产数据库 到 普罗大众的产品 !与在美国创业软件公司老板对话
MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
临时工访谈:我很普通,但我也有生存的权利,大龄程序员 求职贴
临时工说:DBA 是不是阻碍国产数据库发展的毒瘤 ,是不是?从国产DB老专家的一条留言开始 (其实更好看的是文章下方的留言)
感谢 老虎刘 刘老师 对 5月20日 SQL 问题纠正贴 ---PostgreSQL 同一种SQL为什么这样写会提升45%性能
PostgreSQL 同一种SQL为什么这样写会提升45%性能 --程序员和DBA思维方式不同决定
PostgreSQL 熊灿灿一句话够学半个月 之 KILL -9
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一 (阿里云组团PK笔者实录)
临时工访谈:金牌 “女” 销售从ORACLE 转到另类国产数据库 到底 为什么?
临时工访谈:无名氏意外到访-- 也祝你好运(管理者PUA DBA现场直播)
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
PostgreSQL PG_DUMP 工作失败了怎么回事及如何处理
PostgreSQL 为什么也不建议 RR隔离级别,MySQL别笑
临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者
临时工说:OceanBase 到访,果然数据库的世界很卷,没边
PolarDB for PostgreSQL 有意思吗?有意思呀
PostgreSQL 玩PG我们是认真的,vacuum 稳定性平台我们有了
临时工说:裁员裁到 DBA 咋办 临时工教你 套路1 2 3
临时工说:OceanBase 到访,果然数据库的世界很卷,没边
MONGODB ---- Austindatabases 历年文章合集
MYSQL --Austindatabases 历年文章合集
POSTGRESQL --Austindatabaes 历年文章整理
POLARDB -- Ausitndatabases 历年的文章集合
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 会丢数据吗?在次补刀MongoDB 双机热备
临时工说:从人性的角度来分析为什么公司内MySQL 成为少数派,PolarDB 占领高处
PostgreSQL 字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"
PostgreSQL Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)
Austindatabases 公众号,主要围绕数据库技术(PostgreSQL, MySQL, Mongodb, Redis, SqlServer,PolarDB, Oceanbase 等)和职业发展,国外数据库大会音译,国外大型IT信息类网站文章翻译,等,希望能和您共同发展。
截止今天共发布 1208篇文章