【IT168技术评论】4月2日-3日,中国首届数据库技术大会在北京盛大召开。在这一面向数据库及商业智能技术专业人群的技术盛会上,各路DBA、数据库开发,商业智能技术高手云集,分享各自在数据库技术领域深入研究的体会和非常好的实践。
4月2日下午进行的“SQL Server、DB2应用实践专场”演讲中,用友软件U9研发中心的黄卫分享了如何基于SQL Server 2008构建SOA大型管理软件技术实践。
用友U9研发中心数据库专家 黄卫
企业为保证进行查询、分析、报表、预测和商业智能(BI)的需要,有些数据至少要保存3年以上。在多工厂协同制造管理的业务场景中,企业为实现需求拉动、生产透明、实时成本的管理要求,需要完成从客户订单、生产计划、工序和装配,一直到产品入库等流程,数据库大约要至少4000个数据库表来储存各种物料、产品、备件、资源、设备等信息,而一个关键业务数据表每年要产生数千万条数据。所有这些构筑成了企业海量数据和大规模并发的实际而迫切的需求。
在数据库应用中,系统性能的瓶颈主要是在磁盘IO上,相比于CPU速度的不断提高(摩尔定律)和多核CPU的普及,以及数据的迅速增长,磁盘IO的性能提高却很慢,这也导致磁盘IO的瓶颈现象愈发严重,使得提高数据库性能的努力遇到了很大障碍。于是以时间来换空间的优化技术——数据压缩技术应运而生。数据压缩技术对于数据库而言,既能加快读取的速度,又降低了磁盘的存储消耗空间,可谓一举两得,但同时也不能忽视数据压缩/解压缩带来的额外CPU和时间的消耗。
SQL Server 2008(代号Katmai)是微软第一次真正在数据库中引入数据压缩技术(SQL Server 2008 Data Compression)。SQL Server 2008 支持表和索引的行压缩和页压缩。
行级压缩将大幅减少元数据所需的变量长度,较以前每个字段需要花费2个字节来存储,现在只要仅仅3个位。字段本身现在也变得更小,在整型字段中存储像1这样的数值,只需要一个字节,而大数值则最多只需要4个字节。
行级压缩允许在行间共享共有数据。通过这种方式,我们让原本需要大约25个字节来存储的行数据,减少到只要大约17个字节来存储,节省30%以上。
每一个页都是单独压缩的,前缀和字典也存储在页内。由于页是存储分配的原子单位,将半页压缩到四分之一页是没有任何意义的,所以,只有在页的内容快满的时候才会开始压缩处理。
在使用行和页压缩时还有一个性能权衡问题,因为CPU使用率会上升,但I/O使用率和内存占用会下降。
Backup Compression是SQL Server 2008的另一个特性,它是通过普通的文件系统型压缩技术实现的,对于给定的数据库,只有启用或者禁用,没有其它可调节选项。
用友U9的大部分表和索引都使用了SQL Server的页压缩。利用SQL Server 2008,U9的性能得到了充分展现和提升。由方案实施前的1,200并发用户,提升到实施方案后的3,500并发。预计2008年底提升到10,000并发数量。
大比例压缩数据存储 在U9 ERP企业级数据平台解决方案中,SQL Server 2008数据存储压缩特性在解决方案实施前后的对比数据如下:
作为企业级面向服务底层设施(ESOI)的关键企业级计算和数据库平台,U9通过采用SQL Server 2008数据压缩、备份压缩等性能优化新特性,显著提升U9性能,不断突破大规模并发记录,为用户提供高效、健壮、可靠的企业级计算平台。