`
Alice南京
  • 浏览: 21201 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

数据库分表性能测试

阅读更多
业务背景:
随着业务发展,单表的数据量已达实际应用推荐的极限,继续增加可能会性能瓶颈,考虑到后续业务发展,必须把现有数据按比例拆分到多张分表,这样变相地提高了单表容量。

分表性能关注:
分表索引数据的读取比较频繁,需要考虑使用缓存机制,以及定期更新缓存的机制,减少单表压力,提高性能。
批量操作时如果涉及到多个分表的读写,应该顺序执行,减少数据库的并发请求。同时业务系统应该关注批量查询的时间段,减少无意义的大范围查询功能。

分表测试方案设计:

压测场景 (单表铺底500w)
单条数据插入:A表
单条按主键查询,数据集中在同一张分表:A表
单条按主键查询,数据分散在不同分表:A表
单条按条件查询,数据集中在同一张分表:A表
单条按条件查询,数据分散在不同分表:A表
单条按主键修改:B表
单条按条件修改:B表
单条按主键删除:B表
批量数 据插入:C表 x1000
按条件查询列表,数据集中在同一张 分表:C表
按条件查询列表,数据分散在不同分 表:C表
按条件更新多条记录:C表
开启事务时,多次单条数据插入:A表
开启事务时,多次批量数据插入:D表
开启事务时,多次单条按主键修改: E表

过程中发现问题及优化方法:
统计信息
同样的表,同样的条件,同样的索引,为何出现如此不稳定的数据?

数据量增长了20%!!!
需要从新收集统计信息。

统计信息的重要性:
为了执行查询或 DML 语句(INSERT、UPDATE、DELETE),DB2 必须创建一个访问计划(access plan)。访问计划定义按什么顺序访问表,使用哪些索引,以及用何种连接(join)方法来关联数据。好的访问计划对于 SQL 语句的快速执行至关重要。DB2 优化器可以创建访问计划。这是一种基于成本的优化器,这意味着它是根据表和索引的相关统计信息来作出决策的。

收集统计信息-runstats
runstats on table [模式名].[表名] with distribution and detailed indexes all
注意:你可以在所有列上,或者仅仅在某些列或列组(除了LONG和LOB列)上执行RUNSTATS。如果没有指定特定列的子句,系统则会使用默认的ON ALL COLUMNS子句。
如果为单一索引进行runstats,可以使用: runstats on table [模式名].[表名] for indexes [索引名]
一个SQL在写完并运行之后,其实我们只是告诉了DB2去做什么,而不是如何去做。而,具体的如何去做,就取决于优化器。优化器为了生成最优的执行计划,就得掌握当前的系统信息,目录中的统计信息等等。 runstats命令就是用来收集数据库对象的状态信息,这对优化器生成最优的执行计划至关重要。

什么时候需要runstats?
1.给表创建一个index后,我们最好做一次runstat,否则可能index没有生效
2.对table做了一次reorg后,记得要做一次runstats
3.表里数据发生了比较大的变化,一般来说,大约表里面的数据量的10%-20%发生了变化,就应该作一次runstats
4.当你在分区(DPF)数据库里面使用了REDISTRIBUTE DATABASE PARTITION GROUP这个命令,那么就需要用runstats来收集新的统计信息

执行了runstats的效果。
执行前


执行后



如何优化执行计划:
1.适当的runstats和reorg
2.尽量使用索引条件
3.在sql中仅选择需要的列
4.调整where条件


在 DB2 优化器中使用分布统计信息的原文出处:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0606fechner/
  • 大小: 29.3 KB
  • 大小: 437.8 KB
  • 大小: 32.5 KB
  • 大小: 15.1 KB
  • 大小: 88.5 KB
  • 大小: 60.4 KB
  • 大小: 37.2 KB
分享到:
评论

相关推荐

    数据库的架构设计.pdf

    数据库的架构设计 数据库的架构设计 主要内容: 1、数据库性能测试的⽬的及范围 2、数据库的常⽤架构 3、数据库主从同步的⼯作原理 4、数据库分库分表的设计⽅法 数据库的性能测试范围: 1、sql语句 --慢查询等 2、...

    DDAP-FPMA第二轮性能提升测试报告2

    附件一:测试过程实测结果1数据库存量:156亿数据库分表:通过Mycat分库,5台物理机,共1000个数据库,每个库一张表 单表存量:平均1560万数据库索引:

    支持多数据库的ORM框架ef-orm.zip

    实际性能测试表明,EF的大部分操作都要快于Hiberante和MyBatis, 部分操作速度甚至数十倍于上述框架。 EF在极限插入模式下,甚至刷新了每秒10万条写入的记录。远远超过了其他框架。 一个初步的性能测试:测试代码...

    目前测试过的分表自增ID分配的方案对比-2020-04-291

    1. MySQL数据库方式Redis Incr方式分配自增ID数据库方式3和Redis Incr分配自增ID的性能对比1. MySQL数据库方式数据库方式优点、

    MySQL性能优化及高可用架构设计 教程

    主要内容:MySQL性能介绍,MySQL基准测试,MySQL数据库结构优化, MySQL高可用架构设计, 数据库索引优化, SQL查询优化,数据库的分库分表,数据库监控

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲...索引的失效与优化36讲什么时候需要分表分库37讲电商系统表设计优化案例分析39讲答疑课堂:MySQL中InnoDB的知识点串讲加餐讲推荐几款常用的性能测试工具

    企业分布式数据库架构方案研究与设计

    随着互联网产品的发展,传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究与设计应运而生,基于大部分停留在理论层面的研究且关键技术集中在大型互联网公司等情况,所以本文主要针对中小公司采用较多的关系...

    高并发考勤系统的性能优化研究与实现

    考勤管理系统在满足用户功能方面的...部署完成后对系统进行了性能测试,分析测试结果并与市场主流考勤系统进行比较,得出本文中设计的部署方案在性能上有所提升,本文对大数据量的考勤系统的方案优化有一定实用价值。

    DB2 OLTP系统的物理设计最佳实践(中文版)

    拆分表 23 范围分区表 24 MDC 表 24 RCT 表 25 临时表 26 表存储和性能 26 最佳实践 27 索引 29 索引类型 29 OL TP 工作负载的索引指南 29 范围分区表的索引 31 集群索引 31 包含 XML 数据的表的索引 32 调整索引...

    ThinkPHP v5.0.0 RC4.zip

    拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的...

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    奇虎360公司开源的Atlas是优秀的数据库中间件,美团点评DBA团队针对公司内部需求,在其上做了很多改进工作,形成了新的高可靠、高可用企业级数据库中间件DBProxy,已在公司内部生产环境广泛使用,较为成熟、稳定。...

    系统架构师案例分析知识点整理

    数据库优化:索引优化、查询优化、分库分表 高可用性设计:故障转移、容灾备份、自动恢复机制 异步处理:消息队列、异步任务处理、事件驱动架构 安全性设计: 数据加密:数据传输加密、数据存储加密 访问控制:身份...

    MySQL优化笔记-整理版.doc

    “分表分库”(用什么策略分表分库?) “主从分离”(用什么中间件?) 并没有从细化到定量的层面去分析. 如qps提高了%N? 有没有减少文件排序?语句的扫描行数减少了多少? 没有大量的数据供测试,一般在学习环境中,只是...

    mysql查询时offset过大影响性能的原因和优化详解

    本文将介绍mysql查询时,offset过大影响性能的原因及优化方法。 准备测试数据表及数据 1.创建表 CREATE TABLE `member` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL COMMENT ...

    ShardingSphere:SpringBoot2+MybatisPlus+Swagge分库分表

    快速的掌握分库的实战,即插即用适用人群IT从业人员,开发人员,Java从业者,互联网从业者,性能调优人群课程简介 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈。 它由Sharding-JDBC、...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    分库分表 锁 悲观锁 乐观锁 行级锁 分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip 柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 索引 锁 oracle ...

    简约论坛 v4.1

    论坛采用Cookies、Session、Application等技术对论坛数据进行缓存,减少对数据库的访问,提高论坛的性能。可以承载较多的用户同时访问; 数据分表功能,减轻数据量大的时候访问数据库的负担; 支持多皮肤、风格切换...

    搞定后台架构实战指南课2022

    │ 07 如何基于流量回放实现读服务的自动化测试回归?.mp4 │ 10 如何利用依赖管控来提升写服务的性能和可用性?.mp4 │ 11 分库分表化后如何满足多维度查询?.mp4 │ 13 如何利用缓存实现万级并发扣减?.mp4 │...

    Discuz!NT V3.0.0(Bulid090929)安装版源码

    添加了分割,合并主题的跨分表操作限制 添加了静态头像地址请求的性能优化开关 安装包已更新,进入系统设置会提示自动打补丁 安装说明: 一、VS2008打开项目,然后生成解决方案。 二、运行Discuz.Web 中的 ...

    简约论坛 v4.1.zip

    论坛采用Cookies、Session、Application等技术对论坛数据进行缓存,减少对数据库的访问,提高论坛的性能。可以承载较多的用户同时访问; 数据分表功能,减轻数据量大的时候访问数据库的负担; 支持多皮肤、风格...

Global site tag (gtag.js) - Google Analytics