根据Google工程师Mark Callaghan的最近一篇blog所说,Google是使用MySQL的大用户,并且是MySQL的爱好者. Callaghan介绍了Google对MySQL代码基础做的一些修改和强化来使DBMS的更具可扩展展性和可管理性. 这些修改已经以GPL license方式捐献给了MySQL社团.
<!-- --> <!-- -->
当MySQL宣布支持这个流行的开源DBMS的公司的收益已经达到$50M,并且准备进行一次IPO的这一天,我们就可以感觉到大企业在关键使命的项目上 对MySQL的依赖正在增加. Google就是这样的大公司其中之一,Google工程师Mark Callaghan最近发表的这篇blog描述了Google对MySQL基础代码做的一些贡献.
我们认为MySQL是个很棒的数据存储方案,当我们的项目需求需要这个数据在某些领域有所提高时,我们对MySQL做了些改善,主要是针对高效性和可管理性领域.
高可用性的特征包括支持半同步复制,监视从一个master到一个slave的binlog,应急恢复时及时把一个slave提升到master,在应急修复中保持InnoDB和复制的状态.
可管理性特征包括用来监视table和account使用的资源的新的SQL语句. 这个包括了计算每个account和每个table取到的或者是被改变的行数的能力. 这同样也包括测量一个account执行SQL命令使用数据库的时间.
Google Code页面中子项目的Wiki对这些改进有较详细的描述:
Semi-synchronous replication
MySQL的复制协议是异步的. master并不知道何时或者是否一个slave得到了复制事件. 这样很高效. 一个slave会请求一个file的某个偏移处的所有复制事件. 当它们准备好时master会把事件推给它们...
每个发送给半同步的slave的复制事件都需要额外的两个字节放在头部来指明这个事件是否需要答复. 这些字节会被slave IO线程剥去,剩下的事件信息会被正常处理. 当需要答复时,slave IO线程会用现有的连接去回应master.指示一个事务结束的事件,例如commit或者允许自动提交的insert,一般需要回复.
Mirrored Binlogs
我们已经修改了slave IO线程让它在master写入relay log时维护master的binlog的副本. 通过拷贝,保证这个文件拥有相同的名称和内容. 当这个完成后,slave就会在复制代理slave中透明的启用应急备份,直到所有的代理都镜像了binlog.
Transactional Replication
slave复制状态被存在两个文件里:relay-log.info and master.info. slave SQL线程向存储引擎提交事务,然后更新这些文件,指示relay log里的下一个事件将会被执行. 事务提交过程中如果slave mysqld被终止了,这个file update状态和复制状态不一致,slave SQL线程就会在slave mysqld重启时重复最后一个事务.
这个功能通过将复制状态存储在InnoDB事务log里来保护InnoDB 储存引擎. On restart, this state is used to make the replication state files consistent with InnoDB.
Activity monitoring per table, account and index
我们增加了一些代码来测量数据库的活动,统计每个account,table,和index的数据. 我们同时新增了一些SQL声明来显示这些数据.
Asynchronous IO in InnoDB
InnoDB在Windows上支持异步IO. Linux上,它在后台使用4线程去执行IO任务而且每个线程都是要同步IO... 当InnoDB在random IO中发现locality,当它检测到一个序列扫描时,它会发出预取请求. 然而,它只会使用一个线程去执行这些请求. 越多的IO请求被并行的执行时,多磁盘的server就被利用的越充分.
因为现在的服务器都使用大GB的内存,所有应该尽可能的使用直接的IO操作. 我们修改了InnoDB,让它能够配置用来在后台执行读写请求的IO线程的数目.
Fast Master Promotion
这些指令可以让一个slave迅速的提升为master. 因为我们可以让它不需要重启就能实现,所有很快. 有脏页面的数据库引擎,例如InnoDB,通常需要花很长时间去shutdown(超过一分钟)
What features do you believe MySQL would really need in order for developers to use the open-source DMBS in demanding enterprise projects?
外刊IT评论
分享到:
相关推荐
Devart dbForge Studio for MySQL Enterprise 是...在9.0.338版本中,可能包含了一些新的改进和修复,以提升用户体验和稳定性。用户在使用时,可以根据需求探索并利用这些特性,进一步提升数据库开发和管理的工作效率。
在这个MySQL驱动中,可能会利用goroutine来并发执行多个数据库操作,提升系统吞吐量。 5. **性能优化**: 除了GC优化,项目可能还包含其他性能改进策略,如预读取、连接池、批量操作等,以提高数据读写速度和整体...
Navicat for MySQL 2017是数据库管理工具中的佼佼者,尤其在MySQL数据库管理领域中备受推崇。这款工具以其强大的功能和直观的用户界面,为数据库管理员和开发人员提供了极大的便利。在本文中,我们将深入探讨Navicat...
每个版本可能包含不同的改进和修复,因此在使用时应确保与运行环境兼容。 **5. 安装包及文件结构** `package`这个文件很可能是MHA的安装包,可能包含了Manager和Node的二进制文件、配置示例、文档等资源。安装时...
MHA 0.58是一个稳定的版本,它包含了一些重要的改进和修复,例如: 1. 提升了故障检测的准确性,减少了误报的可能性。 2. 优化了切换过程,减少了数据不一致的风险。 3. 支持了更多的MySQL版本,包括社区版和企业版...
这个版本是V1.5,表明它经过了至少一次以上的迭代优化,可能包含了修复错误、提高性能或者增加新功能的改进。"完美解密开源版"意味着该代码已经去除了任何可能存在的加密或保护措施,并且源代码完全公开,允许用户...
在技术层面上,PJBlog采用MySQL作为数据库,存储博客文章、用户信息等数据。其后台管理界面友好,操作直观,即便是对编程不太熟悉的用户也能轻松上手。同时,PJBlog支持多语言,便于不同地区的用户使用。为了保证...
它旨在保持与MySQL的高度兼容性,同时也引入了多项技术创新和改进,以提供更好的性能、安全性和可扩展性。 MariaDB的名字来源于Monty的女儿Maria,它是对MySQL的一种致敬,同时也表达了其致力于开放源代码数据库...
1、修复:后台右上角小房子图标的前台首页链接在多站点情况下,切换站点后无变化。 2、修复:文档管理标题图、属性图、图集在火狐下点击上传按钮无反应。 3、修复:文件管理搜索功能没有保留当前文件夹路径。 4、...
每个新版本通常会修复已知的安全漏洞和性能问题,因此,及时升级至最新版本对于保持系统的安全至关重要。 **总结** Piwik v0.4.5作为一个早期版本,虽然可能没有后来的版本那样完善,但它已经展示了强大的网络分析...
MariaDB是一个开源的关系型数据库管理系统,它源自于MySQL,并在MySQL的基础上发展而来。作为一个分支,MariaDB致力于保持向后兼容性,使得从MySQL迁移至MariaDB变得相对简单。标题中的"mariadb-10.10.2-winx64.zip...
MariaDB的名字来源于其创始人Michael Widenius的女儿Maria,它的目标是保持与MySQL的高度兼容性,同时引入新的特性和改进,以提升性能、安全性和稳定性。以下是一些关于MariaDB的关键知识点: 1. **兼容性**:...
4. **备份与恢复**:此版本可能改进了数据库备份和恢复的流程,支持更大规模的数据备份,并且增强了恢复选项,确保在数据丢失时能快速恢复。 5. **SQL编辑器**:SQLyog的内置SQL编辑器通常具有代码高亮、自动完成和...
Bug修复谷歌地图,现在需要一个API密钥 - 这个功能已经被添加到谷歌地图块(感谢MrKarlDilkington)修正了作曲家对删除已发布的页面旧的页面版本。的UserInfo的修复空间(感谢jaromirdalecky)会话块现在可以适当地...
4) Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。当前Kubernetes支持GCE、vShpere、CoreOS、OpenShift、Azure等平台,除此之外,也可以直接运行在物理机上。接下来本文主要从以下几方面阐述...
改进class.sftp.php- 改进class.ftp.php- 改进的自定义CSS功能- 提高存储错误显示- 在列表中修复的安全问题- 使用水印时,在非工作重复图像检测修正错误- 在社会登录强制性电子邮件领域用户设置修复的臭虫- 在全屏...
这个版本是3.5.2,带来了许多改进和修复,使得与数据库交互更加顺畅。 4. **log4j-core-2.10.0.jar**:Log4j是Apache的一个日志记录框架,广泛应用于Java项目中。2.10.0版本提供了丰富的日志级别、布局和Appender,...
4.【修复】后台上传文章缩略图程序改进。(2016.07.30解决) 5.【修复】删除zhuanti多余控制器出现漏洞。(2016.07.30解决) 6.【修复】手机站搜索功能出错,修改为post提交模式。(2016.07.30解决) 7.【修复】手机站...
1、修复:后台右上角小房子图标的前台首页链接在多站点情况下,切换站点后无变化。 2、修复:文档管理标题图、属性图、图集在火狐下点击上传按钮无反应。 3、修复:文件管理搜索功能没有保留当前文件夹路径。 4、...
它们可能出现在功能、性能、安全性等方面,需要通过调试和修复来改进软件质量。 - **Bug优先级**:指Bug对软件功能或用户体验的影响程度,通常分为高、中、低三个等级,以便确定修复的紧急程度。 - **Bug严重程度**...