- 浏览: 21201 次
- 性别:
- 来自: 南京
最新评论
业务背景:
随着业务发展,单表的数据量已达实际应用推荐的极限,继续增加可能会性能瓶颈,考虑到后续业务发展,必须把现有数据按比例拆分到多张分表,这样变相地提高了单表容量。
分表性能关注:
分表索引数据的读取比较频繁,需要考虑使用缓存机制,以及定期更新缓存的机制,减少单表压力,提高性能。
批量操作时如果涉及到多个分表的读写,应该顺序执行,减少数据库的并发请求。同时业务系统应该关注批量查询的时间段,减少无意义的大范围查询功能。
分表测试方案设计:
压测场景 (单表铺底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/
随着业务发展,单表的数据量已达实际应用推荐的极限,继续增加可能会性能瓶颈,考虑到后续业务发展,必须把现有数据按比例拆分到多张分表,这样变相地提高了单表容量。
分表性能关注:
分表索引数据的读取比较频繁,需要考虑使用缓存机制,以及定期更新缓存的机制,减少单表压力,提高性能。
批量操作时如果涉及到多个分表的读写,应该顺序执行,减少数据库的并发请求。同时业务系统应该关注批量查询的时间段,减少无意义的大范围查询功能。
分表测试方案设计:
压测场景 (单表铺底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/
发表评论
-
netstat当我们系统有问题的时候,我们不要急于去调查我们代码,这个毫无意义。我们首要需要看的是操作系统的报告。
2015-11-11 09:43 0http://blog.aliyun.com/896?spm= ... -
Code - 60990 Error: Two Way Communication Error: Function two_way_comm_post_mess
2015-09-14 10:28 662参考:http://www.blogjava.net/qile ... -
压力机疲劳
2015-09-10 16:31 5985个用户,使用一台压力机 5个用户,使用五台压力机 ... -
think_time
2015-09-09 15:56 0loadrunnerjava脚本,使用thinktime。 例 ... -
参数化
2015-09-07 18:40 444我这里写下参数类型为file的 Select Next R ... -
loadrunner 日志打印
2015-09-07 11:29 975参考: http://bbs.51testing.com/th ... -
应用日志对压测的影响
2015-09-06 12:03 5481.AIX小机 压测CPU的sys请求过多 尝试调整日志级 ... -
利用loadrunner代理方式,录制手机客户端脚本
2015-09-02 15:57 2412需要保证手机终端和电脑在同一无线网络内,手机终端可以通过代理将 ... -
sql句柄用尽,在请求数据库全部报错
2015-08-21 14:10 0execute read lnsprdinfo error!s ... -
hessian接口公司逐渐用ssf去替代它了
2015-08-19 17:13 0hession接口脚本 import lrapi.lr; ... -
关联小结
2015-08-19 14:41 625关联:从响应消息中取出我们需要的字段值。 每一次执行时都会变动 ... -
403Forbidden 防火墙拦截
2015-08-18 14:35 11361.小压力跑场景不到1MIN,请求消息都返回失败。 报抓关 ... -
运行时报错:network buffer size带宽问题
2015-08-17 10:20 996运行时报错: Action.c(8): Error -2660 ... -
杂待分类1
2015-08-10 18:11 01、进程与线程 进程是程序执行时的一个实例,即它是程序已经执行 ... -
同一action,响应时间不一致(回放>场景压测)
2015-08-07 14:24 904同一脚本,响应时间不一样(回放VS场景压测) 回放过程中事务 ... -
回放慢(仅web协议,java正常)
2015-08-06 11:39 500我用loadrunner11.0录制B/S模式的 ... -
响应时间(max & min)
2015-08-04 20:46 1009MAX Response time java脚本, ... -
压测分析1
2015-08-04 20:24 0增加用户无法增加TPS,响应时间较长,系统资源消耗较少。 增加 ... -
This Vuser already started a transaction with the same name, and has not yet
2015-08-04 19:06 1078压测执行报错:This Vuser already start ... -
webservice 报文post传递
2015-07-23 11:41 1053http接口报文如何发送 ...
相关推荐
数据库的架构设计 数据库的架构设计 主要内容: 1、数据库性能测试的⽬的及范围 2、数据库的常⽤架构 3、数据库主从同步的⼯作原理 4、数据库分库分表的设计⽅法 数据库的性能测试范围: 1、sql语句 --慢查询等 2、...
附件一:测试过程实测结果1数据库存量:156亿数据库分表:通过Mycat分库,5台物理机,共1000个数据库,每个库一张表 单表存量:平均1560万数据库索引:
实际性能测试表明,EF的大部分操作都要快于Hiberante和MyBatis, 部分操作速度甚至数十倍于上述框架。 EF在极限插入模式下,甚至刷新了每秒10万条写入的记录。远远超过了其他框架。 一个初步的性能测试:测试代码...
1. MySQL数据库方式Redis Incr方式分配自增ID数据库方式3和Redis Incr分配自增ID的性能对比1. MySQL数据库方式数据库方式优点、
主要内容:MySQL性能介绍,MySQL基准测试,MySQL数据库结构优化, MySQL高可用架构设计, 数据库索引优化, SQL查询优化,数据库的分库分表,数据库监控
开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲...索引的失效与优化36讲什么时候需要分表分库37讲电商系统表设计优化案例分析39讲答疑课堂:MySQL中InnoDB的知识点串讲加餐讲推荐几款常用的性能测试工具
随着互联网产品的发展,传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究与设计应运而生,基于大部分停留在理论层面的研究且关键技术集中在大型互联网公司等情况,所以本文主要针对中小公司采用较多的关系...
考勤管理系统在满足用户功能方面的...部署完成后对系统进行了性能测试,分析测试结果并与市场主流考勤系统进行比较,得出本文中设计的部署方案在性能上有所提升,本文对大数据量的考勤系统的方案优化有一定实用价值。
拆分表 23 范围分区表 24 MDC 表 24 RCT 表 25 临时表 26 表存储和性能 26 最佳实践 27 索引 29 索引类型 29 OL TP 工作负载的索引指南 29 范围分区表的索引 31 集群索引 31 包含 XML 数据的表的索引 32 调整索引...
拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的...
奇虎360公司开源的Atlas是优秀的数据库中间件,美团点评DBA团队针对公司内部需求,在其上做了很多改进工作,形成了新的高可靠、高可用企业级数据库中间件DBProxy,已在公司内部生产环境广泛使用,较为成熟、稳定。...
数据库优化:索引优化、查询优化、分库分表 高可用性设计:故障转移、容灾备份、自动恢复机制 异步处理:消息队列、异步任务处理、事件驱动架构 安全性设计: 数据加密:数据传输加密、数据存储加密 访问控制:身份...
“分表分库”(用什么策略分表分库?) “主从分离”(用什么中间件?) 并没有从细化到定量的层面去分析. 如qps提高了%N? 有没有减少文件排序?语句的扫描行数减少了多少? 没有大量的数据供测试,一般在学习环境中,只是...
本文将介绍mysql查询时,offset过大影响性能的原因及优化方法。 准备测试数据表及数据 1.创建表 CREATE TABLE `member` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL COMMENT ...
快速的掌握分库的实战,即插即用适用人群IT从业人员,开发人员,Java从业者,互联网从业者,性能调优人群课程简介 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈。 它由Sharding-JDBC、...
分库分表 锁 悲观锁 乐观锁 行级锁 分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip 柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 索引 锁 oracle ...
论坛采用Cookies、Session、Application等技术对论坛数据进行缓存,减少对数据库的访问,提高论坛的性能。可以承载较多的用户同时访问; 数据分表功能,减轻数据量大的时候访问数据库的负担; 支持多皮肤、风格切换...
│ 07 如何基于流量回放实现读服务的自动化测试回归?.mp4 │ 10 如何利用依赖管控来提升写服务的性能和可用性?.mp4 │ 11 分库分表化后如何满足多维度查询?.mp4 │ 13 如何利用缓存实现万级并发扣减?.mp4 │...
添加了分割,合并主题的跨分表操作限制 添加了静态头像地址请求的性能优化开关 安装包已更新,进入系统设置会提示自动打补丁 安装说明: 一、VS2008打开项目,然后生成解决方案。 二、运行Discuz.Web 中的 ...
论坛采用Cookies、Session、Application等技术对论坛数据进行缓存,减少对数据库的访问,提高论坛的性能。可以承载较多的用户同时访问; 数据分表功能,减轻数据量大的时候访问数据库的负担; 支持多皮肤、风格...