关于Mysql + Hibernate (JPA)高并发的性能问题

最近在做系统性能调优的问题。大家帮我分析一下可能的瓶颈吧?谢谢各位了。
[b]先说一下我的测试环境:[/b]
App Server: Window 2008 Server + Tomcat 6 , 4 cpu core, 8G mem, 500Mbps, 最大连接4000,Accept 4000, 用了 APR connector。Heap Size 4G
DB Server: Window 2008 Server + Mysql 5.5, 4 cpu core, 8G mem, 500Mbps, 最大并发连接 1000, innodb, buffer pool 4G
JMeter client: Window 2008 Server + JMeter 5.1, 4 cpu core, 8G mem, 500Mbps
也许大家会建议我用Linux系统,我知道那样肯定会好一点。但是没有办法,公司就要求这样的平台。
[b]然后就是我的应用:[/b]
Spring MVC + Resteasy + HIbernate (JPA) + DBCP (连接池500) + 30多张表 
[b]看看我的Test Case:[/b]
用JMeter录制了用户访问我的应用的大多数功能。
并发数为1000, ramp-up时间为1000s,因为我的一个线程执行时间也差不多是1000s。所以用JMeter看下来可以达到1000个实际并发用户。case中80%的insert。插入的是30张不同的表。关联很少。我的调用都是rest服务调用。
[b]测试结果[/b]
访问数据库的service响应时间相当慢,在并发数上升到100的时候相应还挺快,大概500毫秒,一旦并发达到800的时候,相应时间可以达到30s。
[b]我的Monitor情况[/b]
App Server 和 DB Server的cpu都是小于10%,内存都只用了1G多,我配置了4G。
用YourKIT看下来的结果,有大量线程都block在了MySQLIO的read。是在block在prepareStatement的jdbc操作上。

请各位给点建议吧。谢谢

2个回答

软件设备上:
1.给hibernate配置上一级和二级缓存
2.给数据库中相关表的字段建立索引
3.优化相关的查询语句

在硬件上:
1.提高机器的配置
2.把数据库和运行环境分离到两个服务器上。
3.把用户常常访问的数据进行水平切割到多张表中。

访问速度问题会随着访问量的增加会越来越慢,你要找到导致这样问题的瓶颈。不断的去优化它,只考虑节约硬件成本是不行的。

hibernate使用缓存了没有呢

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于Mysql + Hibernate (JPA)高并发的性能问题
最近在做系统性能调优的问题。大家帮我分析一下可能的瓶颈吧?谢谢各位了。rn[b]先说一下我的测试环境:[/b]rnApp Server: Window 2008 Server + Tomcat 6 , 4 cpu core, 8G mem, 500Mbps, 最大连接4000,Accept 4000, 用了 APR connector。Heap Size 4GrnDB Server: Window 2008 Server + Mysql 5.5, 4 cpu core, 8G mem, 500Mbps, 最大并发连接 1000, innodb, buffer pool 4GrnJMeter client: Window 2008 Server + JMeter 5.1, 4 cpu core, 8G mem, 500Mbpsrn也许大家会建议我用Linux系统,我知道那样肯定会好一点。但是没有办法,公司就要求这样的平台。rn[b]然后就是我的应用:[/b]rnSpring MVC + Resteasy + HIbernate (JPA) + DBCP (连接池500) + 30多张表 rn[b]看看我的Test Case:[/b]rn用JMeter录制了用户访问我的应用的大多数功能。rn并发数为1000, ramp-up时间为1000s,因为我的一个线程执行时间也差不多是1000s。所以用JMeter看下来可以达到1000个实际并发用户。case中80%的insert。插入的是30张不同的表。关联很少。我的调用都是rest服务调用。rn[b]测试结果[/b]rn访问数据库的service响应时间相当慢,在并发数上升到100的时候相应还挺快,大概500毫秒,一旦并发达到800的时候,相应时间可以达到30s。rn[b]我的Monitor情况[/b]rnApp Server 和 DB Server的cpu都是小于10%,内存都只用了1G多,我配置了4G。rn用YourKIT看下来的结果,有大量线程都block在了MySQLIO的read。是在block在prepareStatement的jdbc操作上。rnrn请各位给点建议吧。谢谢rnrnrn
关于jpa/hibernate的性能
使用jpa/hibernate进行数据insertrn代码如下:rnEntityManagerFactory emf = Persistence.createEntityManagerFactory("DataCenterSinglePU");rn EntityManager em = emf.createEntityManager();rn EntityTransaction et = em.getTransaction();rn et.begin();rn logger.info("h开始时间:" + sdf.format(new Date(System.currentTimeMillis())));rn for(AlarmBean b : localBeans)rn rn DataAlarmNowBean nowbean = new DataAlarmNowBean(null, b.getFcity());rn em.persist(nowbean);rn rn logger.info("h结束时间:" + sdf.format(new Date(System.currentTimeMillis())));rn et.commit();rnlocalBeans只是80多个数据,结果用了10多秒钟才完成。rnrn看到控制台debug如下:rn......rn2010-01-06 01:27:05,351 [DefaultQuartzScheduler_Worker-1] DEBUG - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)rn2010-01-06 01:27:05,351 [DefaultQuartzScheduler_Worker-1] DEBUG - insert into Data (fcityname) values (?)rn2010-01-06 01:27:05,420 [DefaultQuartzScheduler_Worker-1] DEBUG - Natively generated identity: 23rn2010-01-06 01:27:05,421 [DefaultQuartzScheduler_Worker-1] DEBUG - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)rn2010-01-06 01:27:05,520 [DefaultQuartzScheduler_Worker-1] DEBUG - executing identity-insert immediatelyrn2010-01-06 01:27:05,520 [DefaultQuartzScheduler_Worker-1] DEBUG - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)rn2010-01-06 01:27:05,520 [DefaultQuartzScheduler_Worker-1] DEBUG - insert into Data (fcityname) values (?)rn2010-01-06 01:27:05,624 [DefaultQuartzScheduler_Worker-1] DEBUG - Natively generated identity: 24rn2010-01-06 01:27:05,625 [DefaultQuartzScheduler_Worker-1] DEBUG - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)rn2010-01-06 01:27:05,644 [DefaultQuartzScheduler_Worker-1] DEBUG - executing identity-insert immediatelyrn......rn由此看出,每persist一个对象,就重新建立一个PreparedStatement,用完了就close,下一个对象又重复建立一个PreparedStatement。这样根本就没有利用到PreparedStatement的性能啊rnrn请问使用要什么配置才能提高persist的性能?
关于JPA和hibernate连用问题
有A(id,type)、B(id,tid,tname)两张表,id都是自增长。rn我想让A表type对应B表tid,rn查询后结果让A.B.tname来取值,rnJPA注解该怎么写(写在类里的),rnhql怎么写
MYSQL在高并发量的情况下性能问题
由各个服务进程直接访问数据库会有性能问题嘛?rn以下两个方案有应用么?rn1。使用C++之类的语言作中间层,用于接受多用户的访问请求,并实施缓存,COW等技术。rn2。有没有已有的中间层方案来提升性能?
高并发下的性能问题,tomcat7+mysql+redis
问题比较复杂也比较多,请看官慢慢看来rnrnrn硬件环境:DELL R720 服务器,单C4核1.8G主频,32G内存rn并发数:400rn测试工具:jmeterrn数据库:mysql(和tomcat都在这台服务器中)rnrn场景描述:rn是一个针对订单业务的处理逻辑,大体的业务涉及到四个表,一个订单主表,一个订单操作详表,一个订单从表,一个分类信息表。rn需要的业务操作就是查询一次分类信息表(数据量很小,10条左右),向订单主表插入一条数据,订单操作详表插入两条,订单从表插入两条数据。rn在这种操作模式下(没有使用任何缓存),平均相应时间达到12m+,cpu使用率在40%左右。rnrnrn问题1:rn请问:相应时间是否合理?rnrn问题2:rnmysql是否还有优化的空间?rnrn问题3:rn服务器CPU的使用率是否正常?rnrnrn
关于HIBERNATE和JPA的几个问题
1如果我用了SSH+JPArnORM用的是JDK5.0的注解,查询的时候能不能用HIBERNATE的查询呢?rn例如getHibernateTemplate().delete(Object);能不能这样写呢?还是一定要写JPA的查询呢?rnrn第2个问题:rn就是JPA处理BOLB的方式,如果某个字段是BOLB类型的那么我要定义rn@Lobrn@Column(name = "", columnDefinition = "")rn但是我嫌烦,我只想写一个rn@Column(name)有什么办法吗?rn好象SPRING有个处理LOB类型的类,可以在SSH的配置文件中配的,不知道叫什么类
关于hibernate 与JPA
JPA的注释那么的简单强大,能直接用在hibernate身上吗?支持吗?原封不动哦
JPA、Hibernate连接Mysql的源代码
使用该代码,需要加载相应的jar包,我上传了hibernate的相关jar包,应该还需要Mysql的jar包和几个基础jar包,这个都可以根据名称在网上下载,另外,需要自己安装一个MySQL,建立数据库foxdata,然后根据代码中的实体类建立相应的表
关于hibernate的奇怪性能问题
web服务器是tomcat,已经保证所有hibernate的session全部关闭,但没运行一次对数据库的操作,tomcat的内存就涨点,而且不下降,只要换成直接使用jdbc就不会有这个问题,大家谁遇到过类似的问题?只用jndi调用tomcat的连接池,连接池的设置正常。
JPA Hibernate 事务问题
我在用JPA插入数据时,数据库中并没有及时更新。(JPA+JSF)/(Hibernate+JSF)rn 只能通过rn getSession().beginTransaction().begin();rn getSession().save(transientInstance);rn getSession().beginTransaction().commit();rn 个人觉得这样有些麻烦,JPA/Hibernate中是否有相关的机制,可以自动提交事务的,或者调协全局事务边界之类的东西?rn rn 各位大虾,知道的请提示下,不知道的请交流下!rn 谢谢了!
关于Hibernate和mysql的问题
我用的是tomcat,每天早上6点钟自动重启....,但是有时候启动之后hibernate连接不上mysql.....rnrn在开发的时候我也发现了这个问题,就是当tomcat正在启动的过程中,点击了和数据库相关的操作,这样hibernate就连接不上mysql了,必须重启tomcat才能解决,不知道有什么其他的办法可以解决这个问题.
hibernate与高并发
hibernate能不能在高并发的情况下使用
关于hibernate性能的控制
看了一些文章,结合自己的i些看法,得到以下几点意见: 1.除了1对1的关联之外,其他的关联设置建议根据实际情况设置延时加载. 2.session放在ThreadLoacal中去做控制,这样既节省了session来回打开,关闭的开销,又方便的跨session的事务操作,类似于事务传播 3.尽量避免使用联合主键,而去使用代理主键. 4.使用,同一个数据对象,使用2套对象模型.一...
高并发场景下 System.currentTimeMillis() 的性能问题
NULL 博文链接:https://buru.iteye.com/blog/1779991
JPA Hibernate
JPA Hibernate 帮你详细解释jpa中注解的详细用法 帮你更好的去了解和运用
Hibernate JPA
Hibernate 是最流行的ORM 框架之一,也是最早实现JPA 的规范框架之一。它被JBoss 收购后, 目前作为JBoss 的一个开源框架,它遵循LGPL v2.1 开源许可协议,官方主页是http://www.hiber ate.org/。
hibernate jpa
hibernate jpa 入门测试例子程序,可以直接运行,看结果。适合初学者
工作中遇到的一个关于hibernate jpa的问题
昨天用hibernate-jpa(2.0)时发现一个问题,刚开始以为是查询sql和自己代码的bug。 经反复调试,发现native query不使用join的sql无异常。 使用join的sql如果同时取a,b两张表的id,会导致取出的值完全相同。 例如: select a.id,b.id from tablea a ,tableb b where a.id=b.aid  查询出来的...
一个关于MySql性能的问题!
rn有两个MySql数据库分别运行在两台硬件配置相同的FreeBsd主机上(1G内存,PIII 800 CPU)。这两个数据库中的数据是一样的,因为其中一个数据库的数据是从另一个拷贝而来的。这两台FreeBsd主机上均主要运行MySql数据库服务器。可是发现新装的MySql服务器性能似乎不如原来的服务器,当进行大量数据查询时可以明显感觉到新的MySql服务器速度比较慢。这里用A代表原有的服务器,B代表拷贝A所有数据的新MySql服务器(MySql的版本均为3.23)。两个MySql的配置文件均为,rnrnuser=mysqlrnport=3306rnsocket=/tmp/mysql.sockrnskip-name-resolvernlog-bin=binary_logrnlog-slow-queriesrnset-variable = connect_timeout=10rnset-variable = key_buffer=384Mrnset-variable = table_cache=1024rnset-variable = sort_buffer=32Mrnset-variable = record_buffer=32Mrnset-variable = tmp_table_size=64Mrnset-variable = max_connections=1200rnrn于是用top命令进行简单的观察,发现原有服务器A在内存中的空间是“368M”,rnPID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMANDrn42110 mysql 2 -10 464M 368M RUN 203.9H 95.17% 95.17% mysqldrnrn而新服务器B在内存中的空间是”44524K“,比A相差很多,rnPID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMANDrn1175 mysql 2 -10 407M 44524K poll 4:02 0.00% 0.00% mysqldrnrn请问,1。会不会是这个原因使得B的运行速度变得比较慢?rn 2。如果是这个原因,怎样才能增大B的“RES”空间呢?rnrn
SSH性能配置,高并发
1、2G内存如何配置my.inirn2、spring配置文件如何配置rnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn truern rn org.hibernate.dialect.MySQLDialectrn rn 10 rn rn rnrn3、tomcat要有哪些优化吗?rn
高并发更新mysql问题
业务场景:奖池中共有100个奖品,开200个线程同时抽奖,并写入抽奖记录表,最终结果100个奖品全部抽完,但抽奖记录显示有116个抽奖成功的记录,重新测了一下,总是有多出十几二十几个线程会抽到奖。rnrn代码中都进行了加锁控制,推测是mysql锁的问题,还有,跟mysql事务隔离级别有关系吗?这方面比较弱,跪求各路大神帮助!!!
MySQL高并发问题
目前有一MySQL数据库,要求最高时有500个并发,该数据库定时有数据存入,数据量较大,采用按天分表,每天有5000万条记录,用户主要对表中的数据进行统计和检索,请问,实现上述要求有什么好的方法?
jpa mysql 排名问题
select n.ranks from" + "(select r.*,@rownum \\:=@rownum +1 AS ranks from (select m.* FROM MF_NetValuePerformance m where m.innerCode in (:innerCodeList)" + "ORDER BY m.RRInSingl...
高并发性能调试经验分享
原文链接:https://zhuanlan.zhihu.com/p/21348220 4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?知乎原贴地址如下:腾讯实习生面试,这两道题目该怎么回答? - 编程 . 遗憾的是知乎很多答案在抨击这道题本身的正确性,虽然我不是这次的面试官,但我认为这是一道非
高并发性能的提升
我们在后台服务器开发的过程中不可避免的使用多线程,谈到多线程不可避免的就是锁,平时在工作中有时候谈到锁,但是其实需要真正的了解锁,才能更好使用锁和善用锁,下面我们就通过服务器的实际工作情况来分析一下锁性能限制的本质本质原因,以及如何避免。 这是一段代码     static void* thread_main(void* args) {         std::vector *p_queu
hibernate的严重性能问题
A表关联5个表,当对A表读取1000条数据时,查询数据库次数竟然是5*1000+1=5001次。晕。rn如果对这6个表用视图连接,用jdbc只需对数据库读一次就能拿出1000条数据了。rn难道hibernate不适用于多表联查吗?
mysql的驱动包,适合使用hibernate和jpa
由于以前的MySQL驱动在使用hibernate的时候遇到了一些问题所以希望将这个问题告诉大家,这个驱动在使用过的时候至今没有遇到什么问题
hibernate的性能问题
我在我的应用中使用了many-to-one和one-to-one,但是有的时候我的操作不需要用到这个,比方说论坛的主题和帖子之间,主题-》帖子是一个one-to-many的模型,当我点开一个板块,就会出现很多主题,由于做了one-to-many,tomcat里面出现很多关于帖子的log,但我这个时候还不想看帖子,请问这对性能有什么影响吗?影响大不大?rnrn如果没看明白我的问题,也请写下你的疑问,谢谢
jpa hibernate mysql 在持久化是单元测试出错
这是我的persistence.xml文件内容rnrnrn rn rn rn rn rn rn rn rn rn rnrnrnrnrn这是我的实体类Personrnpackage entity;rnrnimport javax.persistence.Entity;rnimport javax.persistence.GeneratedValue;rnimport javax.persistence.GenerationType;rnimport javax.persistence.Id;rnrn@Entityrnpublic class Person rn rn private Integer id;rn private String name;rn rn public Person() rn rn public Person(String name) rn this.name = name;rn rn @Id @GeneratedValue(strategy=GenerationType.AUTO)rn public Integer getId() rn return id;rn rn public void setId(Integer id) rn this.id = id;rn rn public String getName() rn return name;rn rn public void setName(String name) rn this.name = name;rn rnrnrnrnrn这是我的测试代码:rnpackage junit.test;rnrnrnimport javax.persistence.EntityManager;rnimport javax.persistence.EntityManagerFactory;rnimport javax.persistence.Persistence;rnrnimport org.junit.BeforeClass;rnimport org.junit.Test;rnrnimport entity.Person;rnrnpublic class PersonTest rnrn @BeforeClassrn public static void setUpBeforeClass() throws Exception rn rn rn @Test public void save()rn EntityManagerFactory factory = Persistence.createEntityManagerFactory("kettas");//sessionFactoryrn EntityManager em = factory.createEntityManager();rn em.getTransaction().begin();//开始事务rn //session.save()-->persist()rn em.persist(new Person("赛尔凯达"));rn em.getTransaction().commit();rn em.close();rn factory.close();rn rnrnrnrn报错:rnrnjava.lang.NoClassDefFoundError: org/jboss/util/file/ArchiveBrowser$Filterrn at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:119)rn at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)rn at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)rn at junit.test.PersonTest.save(PersonTest.java:20)rn at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)rn at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)rn at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)rn at java.lang.reflect.Method.invoke(Method.java:597)rn at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)rn at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)rn at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)rn at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)rn at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)rn at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)rn at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)rn at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)rn at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)rn at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)rn at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)rn at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)rn at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)rn at org.junit.runners.ParentRunner.run(ParentRunner.java:220)rn at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)rn at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)rnCaused by: java.lang.ClassNotFoundException: org.jboss.util.file.ArchiveBrowser$Filterrn at java.net.URLClassLoader$1.run(URLClassLoader.java:202)rn at java.security.AccessController.doPrivileged(Native Method)rn at java.net.URLClassLoader.findClass(URLClassLoader.java:190)rn at java.lang.ClassLoader.loadClass(ClassLoader.java:307)rn at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)rn at java.lang.ClassLoader.loadClass(ClassLoader.java:248)rn ... 28 morernrn
hibernate 或者jpa中 mysql 统计问问题!!!!
hql语句如下:rnString hql = "select u from User u,Role r where u.userId=r.userId and u.userId=1";rnrn由于分页使用,我需要算出总数来rnrnem.createQuery("select count(*) " + hql);rn这个语句在sql server里没有问题,在mysql里就有问题 (mysql5.0),我怎么才能统计出总数啊,不推荐使用 list.size()rnrn谁碰到过这样的问题,
JPA使用乐观锁应对高并发
高并发系统的挑战在部署分布式系统时,我们通常把多个微服务部署在内网集群中,再用API网关聚合起来对外提供。为了做负载均衡,通常会对每个微服务都启动多个运行实例,通过注册中心去调用。那么问题来了,因为有多个实例运行都是同一个应用,虽然微服务网关会把每一个请求只转发给一个实例,但当面对高并发时,但它们仍然可能同时操作同一个数据库表,这会不会引发什么问题呢?悲观锁的问题比如电商中常见的商品秒杀系统,在用户
Hibernate +Weblogic 性能问题
我用的是 Weblogic8.1 , Hibernate 3.2.3 数据库是Oracle 8i. rnHibernate是用的Weblogic的连接池, rn现在在unix有很多性能问题,同样的数据同样的页网, 有时很快,但有时非常非常的慢!!!rn我认为可能是 纯种连接池的问题,在某一时间,页网在等连接池连接.rn请高手帮我找找原因!
hibernate性能问题
我做了一个小测试,就是向数据库中插入了10w条数据,然后一个文本框,用ajax判断数据库中有没有输入的这个字段!写了2个方法,一个是用hibernate实现的查询!一个是jdbc实现的查询!hibernate用了1分40秒才返回1条数据!jdbc用了13秒返回1条数据!请问为什么他们之间有这么大的差距啊!我的电脑是奔4 3.0,内存两条512的,运行程序之前,内存使用是(1498M/2465M)!请问怎么才能提高hibernate的性能啊!
请教hibernate的性能问题?
初学hibernate有几个问题请教,rn1 是否应为程序只定义一个SessionFactory对象,在程序启动时作好初始化工作,以后的所有操作均通过其进行?rn2 我的应用程序需要连续几个月或几年不关机运行,并会频繁操作数据库但数据量不大,请问hibernate会不会产生性能问题,比如读库或写库时快时慢等?rn3 为什么初始化SessionFactory对象时有点慢呢,我用的是sqlserver2000??rn
Hibernate的性能和存储过程问题
要通过hibernate来操作SqlServer2000rnrn一次操作要修改3个表,表A要修改5000条记录,表B要添加5000条记录,表C要修改5000条记录。这样一次操作现在要花费数分钟的时间。是不是正常呢?有什么办法可以提高效率呢?rnrnrn想使用存储过程来操作,不知道如果用存储过程还支不支持事务回滚呢?
hibernate session性能问题
麻烦大家看下我这样写会不会带来性能影响的问题,我把所有的Service类的增删改的处理都是调用SessionUtil的process方法,这样会不会是必须等一个线程的调用完成后,另一个线程才能调用process这个方法?rn原本我是在每个Service里面的增删改这样写rnSession sess = SessionUtil.current();rnsess.beginTransaction();rnxxxxrnsess.getTransaction().commit();rn发现太多重复,就想出上面的处理方法,不知道会不会有性能的影响rn[code=Java]rnpublic class SessionUtil rn rn public final static int ADD = 1;rn rn public final static int DELETE = 2;rn rn public final static int UPDATE = 3;rnrn private static SessionFactory factory;rn rn static rn factory = new AnnotationConfiguration().configure().buildSessionFactory();rn rn rn public static Session current() rn return factory.getCurrentSession();rn rn rn public static Session open() rn return factory.openSession();rn rn rn public static void process(int type, Object obj) throws HibernateException rn Session sess = current();rn sess.beginTransaction();rn switch(type) rn case ADD:rn sess.save(obj);rn break;rn case DELETE:rn sess.delete(obj);rn break;rn case UPDATE:rn sess.update(obj);rn break;rn rn sess.getTransaction().commit();rn rnrnrnpublic class CourseService rnrn public void add(Course c) throws HibernateException rn SessionUtil.process(SessionUtil.ADD, c);rn rn rn public void delete(Course c) throws HibernateException rn SessionUtil.process(SessionUtil.DELETE, c);rn rn rn public void update(Course c) throws HibernateException rn SessionUtil.process(SessionUtil.UPDATE, c);rn rn rnrn[/code]
求助hibernate性能问题
初学hibernate rn测试了插入一条数据的时间 基本都是1500毫秒左右 而我单独测试直接写sql语句 插入 效果为10几毫秒 rn用的是mysql数据库 rn不知道从哪些方面来提高性能rn
Hibernate高并发事务修改的问题
在网上搜索hibernate并发修改数据的解决方案,基本上没有打到完整的,大部分都是说使用乐观锁实现,但这还是会抛出:org.hibernate.StaleObjectStateException异常,这个要怎么处理,不可能把这个错误显示给用户吧,也不能提示说其它用户也正在修改此数据吧,求解决方案...
hibernate JPA链接有问题
hibernate 5.2.17 rnrn错误代码 rnrnException in thread "main" java.lang.ExceptionInInitializerErrorrnCaused by: javax.persistence.PersistenceException: Unable to locate persistence unitsrn at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:95)rn at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)rn at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)rn at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)rn at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)rn at utils.JPAUtils.(JPAUtils.java:11)rnCaused by: javax.persistence.PersistenceException: Invalid persistence.xml.rnError parsing XML [line : -1, column : -1] : cvc-elt.1: 找不到元素 'persistence' 的声明。rnrn at org.hibernate.jpa.boot.internal.PersistenceXmlParser.validate(PersistenceXmlParser.java:512)rn at org.hibernate.jpa.boot.internal.PersistenceXmlParser.loadUrl(PersistenceXmlParser.java:445)rn at org.hibernate.jpa.boot.internal.PersistenceXmlParser.parsePersistenceXml(PersistenceXmlParser.java:247)rn at org.hibernate.jpa.boot.internal.PersistenceXmlParser.parsePersistenceXml(PersistenceXmlParser.java:240)rn at org.hibernate.jpa.boot.internal.PersistenceXmlParser.doResolve(PersistenceXmlParser.java:234)rn at org.hibernate.jpa.boot.internal.PersistenceXmlParser.locatePersistenceUnits(PersistenceXmlParser.java:71)rn at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:91)rn ... 5 more
关于mysql的insert性能
采集系统,想把有变化的数据插入数据库。rnrn大概1秒钟有变化的量2000个左右。数值是float型,也就是8000个字节。rnrn现在有两种方法:rn1 批量 insert,每个变化保存1条记录(查询方便),insert into values()()一共2000个, 耗时120ms。rn2 把一个二进制数组直接保存到longblob 字段,发现380000个字节,也只要10ms。rnrn差距真的这么大????rnrn第2种方法又可以有2种rn1 只保存变化,二进制格式【变化量ID,变化量值】,,(这样保存的数据量小 ,但是查询很困难,要解析二进制 )rn2 只要该秒有变化,就记录所有的量,(这样查询比较简单,直接算需要的量的偏移量就可以)rnrn麻烦哪位高手帮分析一下。
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法