百度技术沙龙第6期 MySQL性能及优化

2010年9月11日,第六期百度技术沙龙在京仪大酒店成功举办,在本期沙龙中我们邀请的分享嘉宾是来自百度基础平台部的高级工程师刘斌,以及知名的商用数据库公司Teradata的软件工程师颜勋,和我们一起分享他们在MySQL进行性能优化,以及 MySQL空间数据库的实施等方面的实践和经验。

 

Flash/SSD下的MySQL性能优化

 

Flash/SSD的出现带来了存储界的革命,MySQL使用Flash/SSD又会遇到什么问题,我们是如何针对Flash/SSD对MySQL进行性能优化呢?刘斌对此给大家做了相关的技术话题分享:

 

首先他向在座的参会者简单介绍了三类主要的存储系统,并特别指出数据库的定位和作用领域。

 

有的存储系统是注重吞吐,像GFS、HDFS等都是这类。它们的特点是数据量大、相应时间要求低、数据相对静态、单条数据较大,关系相对简单。这类系统一向以SATA的硬盘存储为主;还有一类是重视低延时的系统,就像我们的数据库,它的特点就是单条的数据小,总数据量的大小适中,数据关系复杂易变,访问量大,这类系统以前主要是以SAS硬盘存储为主,在百度上被定义为散存的数据库,它现在和未来都是以SSD为主;还有一类数据库存储系统是重高并发的,像cache服务器,它们关系简单,并发量大,数据量小,多在百G以内,以内存存储为主,SSD为辅。

 

接下来,刘斌又简单介绍了百度在Flash方面的情况:

 

2007年开始尝试使用,2008年百度网页搜索全面替换为Flash,主要存储方面都不再存储在硬盘。数据库这方面是在2008年尝试使用Flash,中间碰到了一些问题,经过一番工作优化后,目前的成果已经开始在百度线上推广,计划到2011年的时候,整个百度的数据库将全面替换为SSD,未来在单机上面做的优化工作都是基于SSD去进行。

 

刘斌认为大家必须要清楚为什么要使用数据库的原因,即数据库相对于其他存储系统独到的核心价值。不管是做分布式还是单机工作的人都要保证这个核心价值。并提到目前百度在数据库上面临的,也是大家普遍关心的几个问题:一是性能;二是数据规模伸缩的问题;三是一些功能特性上的需求;还有整个系统的服务化以及机器协调运作自动化的问题。

 

本次要分享的是他们在单机性能上做的一些工作和优化,主要是下几个方面:

 

1、响应时间(平均响应时间和长耗时); 

2、吞吐;

3、解放产品线;

4、优化提升效率,节约机器的成本;

5、单机上面的一些分布式数据库需求。

 

接下来,针对以上几方面,刘斌介绍了2010年百度基于SSD做了针对innondb存储和逻辑上的一些优化工作的开展。

 

比如说在性能方面,看主要是什么原因造成的,以前的系统有没有做过类似的工作?在做优化的时候,一定要知道以前做过什么样的工作,现在还有什么样的问题?现在在使用SSD或者硬盘的时候,刷盘会出现大量的长耗时。但是有95%左右的会在一毫秒内完成,也就是说很多性能的问题是比较小比例请求会出现这样的性能问题。这些也是我们在关心性能问题时需要去注意的。

其他方面也是一样。经过分析原因之后,就是进行优化,他们主要是从最低层开始,因为最底层也是最通用的,最理想的就是最通用的能够满足他们自己的需求。主要是FTL(Flash Translation Layer)、文件系统的BFTL、Kernel里的Flashcache,以及存储系统的逻辑等方面的优化。

 

空间数据库实践

 

颜勋给大家分享的是空间数据库实践话题,在去Teradata之前,他主要是做和地理数据方面的研究和开发工作。首先他介绍了GIS相关的概念,通过以前开发的一个例子跟大家探讨一下开发地理数据库需要注意的问题,以及如何在实践中解决这些问题。另外就是关于MySQL的空间扩展相关的知识。

 

GIS方面的应用大家都很熟悉,日常生活中大家会接触到很多的有关地理数据方面的东西。这些应用将会产生大量的地理数据,那么这些数据时如何管理和存储的呢?颜勋对此跟大家做了一些分享:

 

作为IT的厂商,像谷歌、微软等,他们都会提供GIS应用的接口,我们可以依据这些接口进行设计自己的应用或者进行相关的数据分析。 

目前GIS的应用已经实现普及和数据的互操作,用户不仅能利用GIS实现自己的目的,而且也可以为GIS提供一些数据方面的东西。另外在数据互操作和空间数据的普及也涉及了一些存储和管理分析相关的问题。就开源GIS来说,实际上是有一整套的工具,包括地图服务器、地理模型库以及桌面和Web的应用、存储空间数据的空间数据库等。GIS实际上分为两个方面,一方面是商业GIS厂商,另一方面是支持开源GIS的一系列项目,两者是相互对应的。在Web service以及制图方面我们可以在开源GIS中找到MapServer、GeoServer、OpenLayer相关的应用,另外在商业GIS中我们可以购买一些处理自己的GIS数据相关的东西。

 

MySQL Spatial是GIS一个应用比较广泛的空间数据库,存储了诸如点、线、面以及一些几何等数据,并遵循了国际GIS的Open GIS标准。作为空间数据的存储来说,空间数据格式比较通用的两种是:WKT(Well Known Text)格式和WKB(Well Known Binary)。

 

MySQL Spatial有几个特点:

 

从功能上讲,它不支持在空间内的空值的,无法根据空值建立索引;标准符合性不是很好,只支持2D数据;空间函数有限;

 

从分析的角度来说,MySQL的加载速度要优于PostGIS,但空间索引的创建速度要慢;

 

从存储格式来说空间数据是采用简单的WKB格式,没有增加相应的空间参考也就是不同的投影进去;

 

从优化器的角度来说,MySQL是支持空间索引的选择的;

 

在执行引擎方面,是没有支持空间的算子,包括索引链接之类的加速空间运算的方法。

 

最后颜勋给大家讲了一个在Ingres上开发的具体的例子,对开发数据库在空间数据类型、运算函数、存储、空间索引以及优化器和执行算子等方面需要考虑到的问题进行了讲述和分析。

 

在两位的技术分享之后的OpenSpace环节,大家自由分组,对话题相关的内容展开了讨论。并且会后也有人发表了博客谈了自己在本次百度技术沙龙中的心得。

 

来自CSDN的一篇文章““MySQL性能优化" - InfoQ & Baidu技术沙龙小记”。作者着重讲述了自己在讲座上听到SSD方面的心得。凤凰网的高级开发工程师孙立参会后也在自己的博客“MySQL数据库的无缝迁移”中对OpenSpace的话题进行了补充。

收藏 评论(5)
分享到:
共5条回复 最后由林伯爵2017 回复于2019-09-09 01:00
#2 Q1058204131 回复于2019-08-04

棒棒哒

0
#3 代开深圳票 回复于2019-08-04

棒棒哒

0
#4 乐观的徐小小 回复于2019-09-03

棒棒哒

0
#5 乐观的徐小小 回复于2019-09-05

0