本帖最后由 逆风TO 于 2019-1-7 13:49 编辑
公司名称:武汉佰钧成技术有限责任公司
一、介绍一下Hibernate的缓存?
Hibernate中的缓存分一级缓存和二级缓存。 一级缓存就是Session级别的缓存,在事务范围内有效是,内置的不能被卸载。二级缓存是SesionFactory级别的缓存,从应用启动到应用结束有效。是可选的,默认没有二级缓存,需要手动开启。 保存数据库后,在内存中保存一份,如果更新了数据库就要同步更新。 什么样的数据适合存放到第二级缓存中? 1) 很少被修改的数据 帖子的最后回复时间 2) 经常被查询的数据 电商的地点 2) 不是很重要的数据,允许出现偶尔并发的数据 3) 不会被并发访问的数据 4) 常量数据 扩展:hibernate的二级缓存默认是不支持分布式缓存的。使用memcahe,redis等中央缓存来代替二级缓存。 二、 简单讲一下webservice使用的场景? webservice是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。 1、异构系统(不同语言)的整合 2、不同客户端的整合 浏览器、手机端(android,ios.塞班)、微信单、PC端等终端来访问 3、实实在在的列子: 天气预报:可以通过实现webservice客户端调用远程天气服务实现的。 单点登录:一个服务是所有系统的登录 三、没有做过数据库优化方面的事情? 做过mysql数据库的优化、其他数据库类似 定位:查找、定位慢查询 优化手段: a) 创建索引:创建合适的索引,我们就可以现在索引中查询,查询到以后直接找对应的记录。 b) 分表 :当一张表的数据比较多或者一张表的某些字段的值比较多并且很少使用时,采用水平分表和垂直分表来优化 c) 读写分离:当一台服务器不能满足需求时,采用读写分离的方式进行集群。 d) 缓存:使用redis来进行缓存 e) 一些常用优化技巧 四、查找慢查询并定位慢查询? 在项目自验项目转测试之前,在启动mysql数据库时开启慢查询,并且把执行慢的语句写到日志中,在运行一定时间后。通过查看日志找到慢查询语句。 要找出项目中的慢Sql时 1、关闭数据库服务器(关闭服务) 2、把慢查询记录到日志中 3、设置慢查询时间 4、找出日志中的慢查询SQL 使用explain 慢查询语句,来详细分析语句的问题. 五、选择合适的存储引擎? 在开发中,我们经常使用的存储引擎 myisam / innodb/ memory MyISAM存储引擎 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎. 比如 bbs 中的 发帖表,回复表. INNODB存储引擎: 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表. Memory 存储 我们数据变化频繁,不需要入库,同时又频繁的查询和修改,我们考虑使用memory, 速度极快. 问 MyISAM 和 INNODB的区别(主要) 1. 事务安全 myisam不支持事务而innodb支持 2. 查询和添加速度 myisam不用支持事务就不用考虑同步锁,查找和添加和添加的速度快 3. 支持全文索引 myisam支持innodb不支持 4. 锁机制 myisam支持表锁而innodb支持行锁(事务) 5. 外键 MyISAM 不支持外键, INNODB支持外键. (通常不设置外键,通常是在程序中保证数据的一致)
|