`

H2数据库——我真的用到所谓生产环境了——请让我慢慢相信你。

阅读更多

项目不大不小——放到一般企业肯定没那么多钱,放在政府里,几十“米”也不算多——都说Java比PHP运行快多了,但真正互联网项目我是不打算用Java的,而这个项目也就百十个用户使用,配个IBM 3650也对得起它了,用groovy不会有性能瓶颈吧?。

 

Well,回到正题——5506的Intel至强CPU, 4G的内存,146G1.5w HD,除了Tomcat6.x Apache2.2 H2.1.3x三个应用层的服务器,几乎没其他什么应用了。用cron每周重启三个服务一次。

 

在开发环境(T2370笔记本)中性能不错,解析Excel并批量插入2000条数据(50列左右)也就2、3秒,ab下分页查询(1-2w记录的表),勉强达到20 requests/second,等过段时间在服务器中-n几百万次试试,别短时间高负荷的数据库操作挂了。

 

因为业务需求不太复杂,只是用到数据库,少量表组合查询(试图),基本索引,批处理等功能,H2 tcp mode + c3p0连接池——不过查了半天,没看到h2有设置最大链接数的参数,那我只要加大其内存开销了,1.5G。

 

关注H2数据库的童鞋敬请等待偶慢慢加数据和维护日志摘要——其实俺也备用了Mysql(需要修改少许程序),不过请让我慢慢相信你。。。

分享到:
评论
30 楼 key232323 2010-11-01  
后来把c3p0换成 bonecp,2个partition * 20 each,
一直稳定,性能有所提高。
29 楼 aws 2010-10-15  
huangtiancheng 写道
elmar 写道
[quote="yidwo"]
[quote="key232323"]
——都说Java比PHP运行快多了,但真正互联网项目我是不打算用Java的,而这个项目也就百十个用户使用,配个IBM 3650也对得起它了,用groovy不会有性能瓶颈吧?。



java比PHP运行快多了??????



PHP这个连connection pool都没有的玩意,谁比php还慢那是乌龟。

这个东西不能一概而论,虽然说从语言层面上java是比php快,但是实际在做网站的时候就不这样了.java比php对系统资源的消耗更大,如果硬件环境一般的话,java有时候反倒更慢。如果说还用了一堆hibernate,spring的框架,那就更慢了。没有连接池要是mysql的话影响不大,php在和mysql建立连接的时候速度是很快的,这和两门语言设计的初衷有关,不能说没有连接池就如何如何。


PHP基本是比java慢1-2个数量级以上
28 楼 myreligion 2010-10-14  
key232323 写道
myreligion 写道
H2用来缓存数据,放临时表还行,如果数据需要持久化,还是Mysql吧?程序出点问题,OOM一下,数据可就全没了。


TCP mode下,不是这样子的吧,我再仔细看看文档。

In addition to that, running out of memory should be avoided. In older versions, OutOfMemory errors while using the database could corrupt a databases.

H2单独一个进程,Web Server单独一个进程 web server 的 oom 不会影响 H2的。。。

要是这样的话,你图H2的什么那?

类似H2的,像Timesten,建议都是在应用端部署,直接小cache一把到主库的负载。如果单飞,H2就没什么优势了吧?
27 楼 key232323 2010-10-13  
zzsczz 写道
这个楼啊  不知道歪哪里去了。

运行效率,涉及到预编译 、缓存 、 优化等 技术 ,开发效率就更复杂了   必须考虑开发时间和成本(小项目php,大的jee),还有部署成本

php的特点就是一个请求执行完毕释放所有资源,比较不容易内存爆掉,运行效率不是优势 (安全第一,适合做web服务器端程序),人工便宜 ,满足一般需要,如果需要事务监视器 等服务 ,就要专业人士了,成本就海了;jee平台包括的内容多些,免费的也不少,但优化需要经验。

前端都是css  html  xml 还有脚本之类的string,  比较速度?  比谁的字符处理能力强么 ? php也可以跑在jvm上,这个怎么算?



这个,这个……

我只是狭隘地比较么——就是不太负载的web应用在pc server上部署后,用户负荷和一些数据库操作的耗时(单个或并发)——换句话说,就是一样的功能,用户使用起来哪个感觉速度快。

每个人遇到项目和使用涉及到的技术都不同,就我自己,我觉得nginx+php cgi+mysql更快些。。比nginx proxy + tomcat
26 楼 zzsczz 2010-10-12  
这个楼啊  不知道歪哪里去了。

运行效率,涉及到预编译 、缓存 、 优化等 技术 ,开发效率就更复杂了   必须考虑开发时间和成本(小项目php,大的jee),还有部署成本

php的特点就是一个请求执行完毕释放所有资源,比较不容易内存爆掉,运行效率不是优势 (安全第一,适合做web服务器端程序),人工便宜 ,满足一般需要,如果需要事务监视器 等服务 ,就要专业人士了,成本就海了;jee平台包括的内容多些,免费的也不少,但优化需要经验。

前端都是css  html  xml 还有脚本之类的string,  比较速度?  比谁的字符处理能力强么 ? php也可以跑在jvm上,这个怎么算?
25 楼 key232323 2010-10-12  
再来几个
jetty 比较 apache , servlet 比较 groovy template servlet的
参数-c 100 -n 1000

windows下查询一个少列的表,分组写入json文件

查询数据库
Jetty6.1 -> Insert record(id,name) select in page  100 counts (TCP H2)
Requests per second: 11.49 [#/sec]

请求一个json文件
Apache Proxy -> Json by Servlet(Java)
Requests per second:    355.56 [#/sec] (mean)

Apache -> Json by PHP
Requests per second:    336.84 [#/sec] (mean)

Jetty6.1 -> DSL generate Json by Groovy
Requests per second:    40.46 [#/sec] (mean)
24 楼 key232323 2010-10-12  
DOCDOC 写道
都是说话不严谨满嘴跑火车的主儿。倒是给大家看看你的Report啊?


汗。。莫非是说我??

先给一个PHP mysql的



This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 138jc.com (be patient)


Server Software:        Apache/2.2.3
Server Hostname:        XXXX
Server Port:            80

Document Path:          /
Document Length:        10011 bytes

Concurrency Level:      100
Time taken for tests:   2.529269 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      10384000 bytes
HTML transferred:       10011000 bytes
Requests per second:    395.37 [#/sec] (mean)
Time per request:       252.927 [ms] (mean)
Time per request:       2.529 [ms] (mean, across all concurrent requests)
Transfer rate:          4009.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.5      0       8
Processing:    27  240  95.1    240    2072
Waiting:       26  239  94.8    240    2071
Total:         28  240  94.9    241    2072

Percentage of the requests served within a certain time (ms)
  50%    241
  66%    247
  75%    251
  80%    253
  90%    260
  95%    269
  98%    297
  99%    537
100%   2072 (longest request)
23 楼 DOCDOC 2010-10-12  
都是说话不严谨满嘴跑火车的主儿。倒是给大家看看你的Report啊?
22 楼 key232323 2010-10-12  
huangtiancheng 写道
elmar 写道
[quote=&quot;yidwo&quot;]
[quote=&quot;key232323&quot;]
——都说Java比PHP运行快多了,但真正互联网项目我是不打算用Java的,而这个项目也就百十个用户使用,配个IBM 3650也对得起它了,用groovy不会有性能瓶颈吧?。



java比PHP运行快多了??????



PHP这个连connection pool都没有的玩意,谁比php还慢那是乌龟。

这个东西不能一概而论,虽然说从语言层面上java是比php快,但是实际在做网站的时候就不这样了.java比php对系统资源的消耗更大,如果硬件环境一般的话,java有时候反倒更慢。如果说还用了一堆hibernate,spring的框架,那就更慢了。没有连接池要是mysql的话影响不大,php在和mysql建立连接的时候速度是很快的,这和两门语言设计的初衷有关,不能说没有连接池就如何如何。


说的很对。

在select 次数10左右的php程序,在一个4核机器上 ab -c 100到100都是可以的
java ??嘿嘿惨不忍睹,web层面上一个web container就比apache mod_php差别就大得很了,别说nginx + fastcgi了,
在连接mysql socket方面,jdbc效率不觉得比c写的php extension快

就是php的语法觉得没有新兴的这些脚本语言酷

这两天做一些系统调优,另写一blog与大家分享。
21 楼 huangtiancheng 2010-10-12  
elmar 写道
[quote=&quot;yidwo&quot;]
[quote=&quot;key232323&quot;]
——都说Java比PHP运行快多了,但真正互联网项目我是不打算用Java的,而这个项目也就百十个用户使用,配个IBM 3650也对得起它了,用groovy不会有性能瓶颈吧?。



java比PHP运行快多了??????



PHP这个连connection pool都没有的玩意,谁比php还慢那是乌龟。

这个东西不能一概而论,虽然说从语言层面上java是比php快,但是实际在做网站的时候就不这样了.java比php对系统资源的消耗更大,如果硬件环境一般的话,java有时候反倒更慢。如果说还用了一堆hibernate,spring的框架,那就更慢了。没有连接池要是mysql的话影响不大,php在和mysql建立连接的时候速度是很快的,这和两门语言设计的初衷有关,不能说没有连接池就如何如何。
20 楼 elmar 2010-10-08  
[quote=&quot;yidwo&quot;]
[quote=&quot;key232323&quot;]
——都说Java比PHP运行快多了,但真正互联网项目我是不打算用Java的,而这个项目也就百十个用户使用,配个IBM 3650也对得起它了,用groovy不会有性能瓶颈吧?。



java比PHP运行快多了??????



PHP这个连connection pool都没有的玩意,谁比php还慢那是乌龟。
19 楼 Xorcerer 2010-10-07  
linkerlin 写道
H2?
啥东西的缩写?


就叫H2。

http://www.h2database.com/html/main.html
18 楼 zzsczz 2010-09-29  
如果是商业应用,demo版本还是可以用h2的 ,   开发和测试都很方便,维护的功能和性能调优需要额外的代价,毕竟维护工作以及商业数据库也不是免费的。

如果要从h2升级到其他数据库 ,关于数据的导入和导出 ,h2自己带工具(导出到csv )   ,  或者使用etl工具  。如果使用ORM作为访问工具,ORM自带数据迁移工具就更好了。
17 楼 key232323 2010-09-29  
myreligion 写道
H2用来缓存数据,放临时表还行,如果数据需要持久化,还是Mysql吧?程序出点问题,OOM一下,数据可就全没了。


TCP mode下,不是这样子的吧,我再仔细看看文档。

In addition to that, running out of memory should be avoided. In older versions, OutOfMemory errors while using the database could corrupt a databases.

H2单独一个进程,Web Server单独一个进程 web server 的 oom 不会影响 H2的。。。
16 楼 myreligion 2010-09-28  
H2用来缓存数据,放临时表还行,如果数据需要持久化,还是Mysql吧?程序出点问题,OOM一下,数据可就全没了。
15 楼 jitabc 2010-09-28  
H2的全文检索还是很强滴。。。
14 楼 key232323 2010-09-28  
借此地问一个问题

H2查询出来的列名都是默认大写的,有没有参数设置成小写???

莫非偶要自己再编译下source...

修改下
org.h2.jdbc.JdbcResultSetMetaData

getColumnName/Label方法,ant下就可以了。。。
13 楼 whking2003 2010-09-26  
难道是hsql 2.0?
12 楼 key232323 2010-09-26  
jiage17 写道
用H2数据库时,如果第一次是在Administator下应用的,当转换到其他域名下却不可以了
不知道为什么,楼主能分析下吗


请将你的具体情况描述一下呵

论坛里的朋友应该都可以帮下忙滴
11 楼 windlike 2010-09-26  
其实我早都用到生产环境上了

相关推荐

    超级经典的小数据库——h2

    **超级经典的小数据库——H2** H2是一个轻量级、高性能、开源的Java数据库管理系统,它以极小的体积和高效能赢得了开发者们的青睐。H2提供了多种数据库模式,包括单用户模式、服务器模式、内存模式等,适用于各种...

    h2数据库批量导出

    H2数据库是一款开源、高性能、轻量级的Java关系型数据库,广泛应用于测试、开发以及嵌入式环境。它支持多种数据库模式,包括MySQL、Oracle等,并且提供了丰富的命令行工具和API,使得数据库的管理与操作变得简单高效...

    h2数据库 jar包 下载 资料

    **正文** H2数据库是一款轻量级、高性能...通过这些资料,你可以快速掌握如何下载、安装和使用H2数据库,并进一步探索其在实际项目中的应用。无论你是初学者还是有经验的开发者,这个资源包都能为你提供有价值的信息。

    H2数据库客户端

    **H2数据库客户端详解** H2数据库是一款轻量级、高性能的开源关系型数据库系统,设计用于嵌入式和服务器模式的应用。它以其简洁的API、高速度和灵活性而受到开发者的欢迎。H2数据库支持SQL标准,可以方便地与Java...

    springboot整合h2数据库实战

    在这种情况下,使用 H2 内存数据库来模拟数据库环境是一个很好的解决方案。 Spring Data JPA Spring Data JPA 是 Spring Data 的一个子项目,是对 JPA 的再次封装和抽象,底层还是要使用 JPA 的具体实现,通过提供...

    H2 Database(H2内存数据库)

    资源包内容列表是我进行H2预研是收集的H2资料,应该是最全面的的了: 1、h2.pdf (H2 API) 2、h2-1.3.173.jar (截止2013-8-15最新的H2.jar) 3、h2-2013-07-28.zip (截止2013-8-15最新的H2服务,包括API\JAR\服务)...

    H2数据库驱动包

    H2数据库驱动包是专为H2数据库设计的连接组件,它使得开发者能够轻松地在应用程序中集成H2数据库,以便进行数据存储、查询和管理。H2数据库是一款开源、轻量级、高性能的关系型数据库,广泛应用于开发测试和小型项目...

    h2数据导入mysql数据库(看评论酌情下载)

    h2 数据库导入 MySQL 数据库 h2 数据库导入 MySQL 数据库是指将 h2 数据库中的数据导入到 MySQL 数据库中,以便更好地存储和管理数据。下面将详细介绍 h2 数据库导入 MySQL 数据库的步骤。 首先,需要创建一个 ...

    H2数据库最新稳定版本,平台无关包

    它会处理所有必要的配置步骤,如设置路径、注册服务等,让用户能快速便捷地在Windows机器上启动和使用H2数据库。 2. `h2-2014-04-05.zip`:这是一个ZIP压缩文件,包含H2数据库的纯Java版本。解压后,用户可以找到...

    h2 数据库 客户端

    **H2数据库客户端详解** H2数据库是一款开源、高性能、轻量级的Java关系型数据库管理系统,它在嵌入式和服务器模式下均表现出色。H2数据库以其易用性、快速性能和全面的SQL支持而受到开发者的青睐,尤其在进行测试...

    启动H2数据库并导入数据库脚本

    标题中的“启动H2数据库并导入数据库脚本”是指在计算机环境中启动H2数据库服务器,并将预先准备的SQL脚本(如`schema.sql`)导入到该数据库中以创建或更新数据库结构的过程。H2是一个轻量级、开源的Java数据库,常...

    H2数据库官方文档(English)

    根据提供的文件内容,以下是关于H2数据库的知识点: H2数据库是一种开源的关系型数据库管理系统(RDBMS),它以嵌入式数据库的形式出现,通常被用作内存数据库。这意味着它可以将数据库存储在计算机的主内存中,从而...

    h2 数据库驱动包

    h2 数据库驱动包, 为drools-server 提供数据库支持,放在tomcat lib目录下执行

    H2数据库完整版-安装服务和说明

    H2数据库是一款开源、轻量级、嵌入式的Java关系型数据库系统,广泛应用于开发测试、小型项目以及作为大型应用程序的内存模式。本资源提供的是H2数据库的完整版,包含安装服务和详细说明,旨在帮助用户快速上手并深入...

    h2数据库及h2数据库驱动

    H2数据库是一个轻量级、高性能的开源关系型数据库,完全用Java编写,这使得它具有高度的可移植性,可以在任何支持Java的环境中运行。H2提供了多种运行模式,包括内嵌模式(Embedded Mode)、服务器模式(Server Mode...

    H2 Database 教程

    H2 Database是一款基于Java开发的开源内存...H2数据库适合在内存数据库环境中使用,尤其是当需要快速读写操作和轻量级的数据持久化场景。它的使用方便性、灵活的配置以及良好的性能使其成为Java开发者的优秀选择之一。

    H2数据库中文资料

    H2数据库是一款轻量级、高性能、开源的关系型数据库系统,广泛应用于测试环境和小型项目中。它支持多种数据库模式,包括单用户模式、嵌入式模式、服务器模式等,使得在不同的场景下都能灵活运用。H2数据库以其简单...

    h2数据库安装文件-2021610.zip

    H2数据库是一款开源、轻量级、嵌入式的Java数据库,广泛应用于开发测试和小型项目中。它支持多种数据类型,包括INT、VARCHAR、DATE、TIME等,并且提供了SQL92标准的大部分功能,便于开发者进行数据库操作。下面将...

    H2数据库使用说明英文版

    H2数据库是一种开源的关系型数据库管理系统(RDBMS),它以Java语言编写,并且能够以多种方式嵌入到Java应用程序中。H2数据库使用说明详细介绍了其安装、使用、配置等一系列操作,旨在帮助用户快速上手并有效利用这...

Global site tag (gtag.js) - Google Analytics