设为首页 加入收藏

TOP

Java笔试题整合 24页word文档贴出来(九)
2014-11-24 02:23:03 来源: 作者: 【 】 浏览:414
Tags:Java 试题 整合 word 文档 出来
象),而jdbc则是直接操作数据库.


2.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合


3.Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。


还有一点,正确的使用JDBC技术,它的效率一定比hibernate要好,因为hibernate是基于jdbc的技术.


hibernate是jdbc的轻量级封装,包括jdbc的与数据库的连接(用hibernate.property的配置文件实现当然本质是封装了jdbc的forname),和查询,删除等代码,都用面向对象的思想用代码联系起来,hibernate通过hbm 配置文件把po类的字段和数据库的字段关联起来比如数据库的id,在po类中就是pravite Long id;


public Long getId()


public setId(Long id);然后hql语句也是面向对象的,它的查询语句不是查询数据库而是查询类的,这些实现的魔法就是xml文件,其实hibernate=封装的jdbc+xml文件


数据库优化


设计数据库的优化措施。这要看你对预期的数据量的一个估计,不同的数据量有不同的策略。100万数据的表和1亿的数据表的策略肯定是不一样的。同样的设计,查询语句不一样,效果可能也不一样。


比较常用的数据库设计方面的处理措施是,


1、索引的建立,一张表,如果有一些经常查询的字段上,要建立索引。比如库存表,你会经常按厂家查询,那么在厂家这个字段上就要建立索引。如楼上所说,在某些时刻,要采取违反第3范式的一些数据库设计手段。


2、分库,分表技术。可以按业务层次,或者日期、厂家、地区等字段,对表进行横向或纵向的分割。把事务表和数据仓库表分开等。


3、事实上,对于系统的优化,从数据库本身的优化,数据库表的设计,以及应用程序的设计上,关联是很密切的。比如在数据库,可以把临时表,或者一些日志类的表放在内存盘中。在程序设计上,采用缓存机制,分布式数据库机制等等,都是提高系统响应能力的方法。


数据库的优化和你的业务、流量、硬件是分不开的


业务:主要指查询的方式,读写权重,表大小


流量:主要考虑并发请求数


硬件:主要是内存、磁盘、CPU的环境


从业务角度讲:


简单查询只需要对查询条件的列建立索引


需要排序的查询就应该使用符合索引,使排序从文件系统转移到内存中


读写要考虑效率和锁的问题,如果两方面都比较突出,可以考虑建立主从,主服务器做写操作,从服务器做读,读的压力大,可以建立多个从


表的大小直接影响查询效率,单个表的数据量有几十万效率就很低了,可以考虑hash分表,利用表中的某个比较符合业务的字段做分表


如业务需要处理订单之类,需要完整的处理过程,应该选择带有事务处理的存储引擎,如mysql 的 innodb


从流量角度讲:


最主要的是选择适合的存储引擎,mysql的myisam的表级锁会对引擎适合并发较低的环境,但查询速度较快,随着并发的增加,效率支线下降,innodb的行级锁查询速度没有myisam快,但是极大的减少了锁,是并发的效率大大增加,对高并发的环境是不二选择


从硬件角度讲:


内存要合理分配,尤其是事务型的存储引擎,建议内存从小到大的逐渐调整,过大的使用内存会导致使用swap


磁盘的io通常是数据库的主要瓶颈,在你表设计已经比较合理的情况下,io效率依然低下,可以考虑分磁盘存储数据,最好可以使用raid负载磁盘阵列,用多个磁盘分担io的压力


这个年代没有人用单核的处理器,所以多核处理器是最佳选择


总的来说数据库的优化由sql、内存、磁盘IO、表结构、存储引擎等几个主要方面,优化是个过程,没有标准,具体问题具体分析


首页 上一页 6 7 8 9 下一页 尾页 9/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇什么是预编译 何时需要预编译? 下一篇Oracle数据库面试题汇总

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: