数据库读写性能分析
1、 单机类比集群测试
测试环境:
由3台服务器组成的hadoop集群组成分散式文件系统
由一台单独的机器单机类比Hbase集群
由一台机器单机测试Mysql
测试规模:50万条记录以上,单线程、多线程测试
测试结果:
|
|
HBase |
Mysql |
单线程 |
插入 100 条记录 |
155 ms / 154ms |
243 ms / 198ms |
插入 1000 条记录 |
740 ms / 884ms |
1506 ms / 1554ms |
|
插入 10000 条记录 |
8304ms/ 6610ms |
14110ms/ 12839m |
|
插入 100000 条记录 |
43090ms /64715ms |
108082ms /110664ms |
|
读取 500000左右的条记录 |
640 ms / 721ms |
2779 ms / 2794ms? |
|
100线程 |
插入 100 条记录 |
5929ms / 3825ms / 4134ms |
15352ms / 12912ms / 12853ms |
插入 1000 条记录 |
35684ms / 52677ms / 34208ms |
135839ms / 161711ms / 119909ms |
|
读取 500000左右的条记录 |
最快的 1104 ms/最慢的 110897 ms |
如果不加limit,数据库连接超时 |
|
1000线程 |
插入 100 条记录 |
325907ms / 322465ms / 342163ms |
17455ms / 18953ms / 15169ms |
读取500000左右的条记录 |
最快的 717 ms |
如果不加limit,数据库连接超时 |
HBase不同于一般的关联数据库,它是一个适合于非结构化资料存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式(栏位内容都是char).
上面两种 特性,导致HBase的资料表结构非常松散,栏位内容单一,表与表之前没有任何关联,正因爲这样在查询的时候效率非常高
HBase资料表的性能选项:
MAX_VERSIONS:每一个单元保存多少版本的资料(默认是3)
MAX_LENGTH:每个单元中的版本能够保存多少字节的资料(默认字节数是32位元有符号整数最大值)
COMPRESSION:资料压缩,有BLOCK压缩和RECORD压缩
IN_MEMORY:将这个列组装载资料到存储器,加快读写速度,缺点耗费存储器和干预HDFS的备份
BLOOMFILTER:如果这个列组支援布隆过滤器(BLOOMFILTER),那麽在存储器中有个索引来快速地判断要查找的列是否存在这个行中,减少磁盘IO操作.如
果在这个列组你拥有大量的列,每一个列的资料包含的资料非常小,你可能需要在这个列组中应用布隆过滤器(BLOOMFILTER)
2、 列族测试:
测试目标:测试列族增长对性能的影响
测试资料:建表时候定义列族数量,每个列族写入1000字节资料,读取5000次,随机读取任意一列。
测试结果:
单机集群
列族数量 |
10 |
100 |
500 |
1000 |
建表时间 |
12.3 |
19.2 |
45.9 |
Timeout |
每秒写入 |
164 |
323 |
419 |
Timeout |
每秒读取 |
99 |
139 |
122 |
Timeout |
5机器集群
列族数量 |
10 |
100 |
500 |
1000 |
建表时间 |
12.2 |
18.7 |
46.4 |
Timeout |
每秒写入 |
29 |
153 |
376 |
Timeout |
每秒读取 |
119 |
111 |
120 |
Timeout |
测试结论:
Hbase建表时间过长,对大列族的时候支援不好
写入速度在多机集群的时候提高较快
3、排序测试
测试目标:Hbase的行排序是根据主键排序,测试动态或者反序插入时候的性能。
测试资料:动态生成字母资料,zzzzz-aaaaa,还有随机插入
测试结果:
单机集群(每秒多少行)
写入行 |
10,000 |
100,000 |
1,000,000 |
顺序 |
485 |
432 |
334 |
反序 |
451 |
477 |
354 |
随机 |
462 |
421 |
334 |
5机集群(每秒多少行)
写入行 |
10,000 |
100,000 |
1,000,000 |
顺序 |
488 |
440 |
346 |
反序 |
522 |
387 |
343 |
随机 |
468 |
441 |
370 |
测试结论:
采用B树存储和写入缓存,写入数量和顺序对速度影响并不大,应该只是cpu占用的不同。
主要瓶颈还是在网络传输速度上。
相关推荐
《HBase性能测试详解》 HBase,作为一款分布式、基于列族的NoSQL数据库,其性能优化至关重要。本文将深入探讨HBase的性能测试及其关键调优参数,旨在提升系统的稳定性和处理能力。 首先,表的设计是影响性能的关键...
例如,在“hbase+phoenix测试文档及查询速度说明.docx”文件中,可能会详细记录这些测试步骤和结果,包括查询语句的编写、查询时间的对比以及性能优化的建议。 总结来说,HBase与Phoenix的结合,使得我们在处理...
然而,在生产环境中,HBase的读写性能优化是一个比较复杂的问题,尤其对于读延迟的优化更是需要精心设计和调优。下面我们将根据标题和描述中提到的关于HBase读性能优化策略进行详细的知识点阐述。 首先,FullGC异常...
- **第7章:构建实际应用**:通过一系列具体的案例研究,展示如何使用HBase构建复杂的应用程序,涵盖了从需求分析到系统设计、实现再到测试和部署的全过程。 #### 三、HBase核心技术详解 **1. 数据存储模型**:...
总之,YCSB-HBase14-Binding 0.17.0是评估和优化HBase性能的重要工具,它通过提供标准化的测试方法,使开发者能够更准确地了解HBase在不同工作负载下的行为,从而推动HBase在大数据领域的广泛应用和发展。...
测试采用HBase自带的性能评估工具`HBasePerformanceEvaluation`来进行读写测试。具体测试步骤如下: 1. **写入阶段**:首先向HBase表中写入大量数据,以模拟实际应用中的写入负载。 2. **读取阶段**:然后进行读取...
在实际应用中,HBase常用于大数据分析、日志处理、物联网(IoT)设备数据存储、搜索引擎索引构建等场景。使用HBase时,需要注意合理设计表结构,选择合适的分区策略,以及优化访问模式,以达到最佳的性能效果。 总之...
7. **过滤器和比较器**:HBase支持丰富的过滤器和比较器,用于在查询时实现更复杂的筛选逻辑,如RowFilter、QualifierFilter、ValueFilter等。 8. **性能优化**:在开发过程中,了解和利用HBase的预读取(Block...
非关系数据库(经常被称为NoSQL)的特点是弹性和可伸缩性。另外,它们可以存储大数据并与云计算系统协同工作。这些因素导致非关系数据库非常...本文概述了针对几种市面上最成熟也是最流行的NoSQL数据库性能测试的结果。
8. **Test-HBase**: 测试模块,包含了HBase的单元测试和集成测试,这对于理解HBase的正确性验证和测试策略非常重要。 9. **HBase Hadoop Compat**: 类似于HBase Hadoop2 Compat,但针对Hadoop 1.x版本的兼容性。...
4. **HDFS一致性检查**:hbck2会比较HDFS中的HBase数据文件和HBase元数据,确保文件系统中的数据与预期相符。 5. **修复功能**:除了检测问题,hbck2还提供了修复功能,如重新分配丢失的Region、合并不连续的Region...
该资源真实可靠,代码都经测试过,能跑通。 快速:Apache Spark以内存计算为核心。 通用 :一站式解决各个问题,ADHOC SQL查询,流计算,数据挖掘,图计算完整的生态圈。只要掌握Spark,就能够为大多数的企业的大数据...
文章最后通过模拟测试分析,将本文提出的构建方法与传统关系数据库(如MySQL)进行了性能对比,结果表明本文设计的方法能够有效地完成医疗卫生信息中心的构建,并实现了异构数据库到数据中心的同步,达到了数据共享...
此外,自定义Comparator还需要考虑性能优化,因为它直接影响到HBase的查询性能。 "HBASE-comparator.zip"文件可能包含了更多关于如何编写、配置和测试自定义Comparator的详细步骤,以及可能遇到的问题和解决策略。...
- 内存:足够的内存对于提高HBase性能至关重要,建议使用大容量内存。 - 存储:采用RAID或JBOD配置来提高磁盘I/O性能。 - IOPS:选择高IOPS的硬盘或固态硬盘来提升数据访问速度。 - **软件环境**: - Java环境:...
小米也展示了AsyncHBaseClient的架构和性能测试结果。这部分信息涉及到客户端的同步和异步架构以及具体的性能数据,例如使用CompletableFuture.get()进行异步RPC测试的结果,以及证明异步客户端的延迟至少与阻塞式...