DB
MyHerux
heroxu123@gmail.com
展开
-
MongoDB数据自动同步到ElasticSearch(实现中文全文检索)
问题-方案1.产品需要全文检索,数据库是使用的MongoDB,MongoDB的全文检索太慢,打算使用ElasticSearch2.方案1:利用 ElasticSearch 的 River 来同步数据,在github上有MongoDB River的插件:https://github.com/richardwilly98/elasticsearch-river-mongodb。 可以看到使用的版本很旧原创 2016-02-25 11:35:09 · 4325 阅读 · 2 评论 -
MySql 优化详解(二)高性能的索引
MySql 优化详解(二)高性能的索引索引索引是存储引擎用于快速查到记录的一种数据结构。索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。索引基础索引的优点大大减轻了服务器需要扫描的数据量,从而提高了数据的检索速度帮助服务器避免排序和临时表可以将随机 I/O 变为顺序 I/O索引的缺点在创建索引和维护索引 会耗费时间,随着数据量的增加而增加索引文件会占用物理空间,除了数据表需要原创 2017-12-26 16:13:57 · 394 阅读 · 0 评论 -
MySql 优化详解(一)EXPLAIN分析
MySql 优化详解(一)慢 SQL 的定义 慢 sql 在广义上指执行速度很慢的 sql 语句,具体指查询时间大于指定慢查询时间的查询查看设置的慢查询时间 show variables like ‘long_query_time’; 修改慢查询的时间 set global long_query_time=1; 查找慢查询将慢查询记录到日志中查看慢查询记录日志是否开启 show原创 2017-12-25 17:57:25 · 406 阅读 · 0 评论 -
使用mybatis-generator来快速生成代码
配置文件generatorConfig.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/d原创 2016-11-03 15:36:57 · 465 阅读 · 0 评论 -
Mysql的存储过程,Mybatis对存储过程的调用
mysql存储过程1.存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同原创 2016-07-20 12:25:10 · 13287 阅读 · 0 评论 -
java操作Redis
使用java操作redis有两种方法:RedisClient和spring-data-redis。 我觉得RedisClient灵活度高一些,比较方便。所以暂时先只记录本部分。1.使用RedisClient1.添加依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <v原创 2016-04-26 15:36:27 · 390 阅读 · 0 评论 -
Spring操作Mongodb
1.spring-mongo原创 2016-03-27 21:43:36 · 549 阅读 · 0 评论 -
Spring动态连接Mongo(mongo读写分离,连接不同副本集)
1.想法因为业务需要,mongo开启了副本集,又因为mongo主节点primary的插入操作太频繁。所以 现在打算读写分离,因为查询多,插入少,所以用主节点存,从节点查。2.推荐但是google了很多方法之后发现,动态连接才是最好的方法。动态连接的方式是,会动态查询是主节点的服务器快还是丛节点的快。虽然我们现在的业务显示出从节点查询要快一些,但是不能保证以后不会改变,所以我选择这种方式。3.配置<原创 2016-03-27 21:23:28 · 2893 阅读 · 0 评论 -
mysql获得刚插入的那条记录的id
1.想法因为业务的需求,需要获得刚插入的那条记录的id 首先考虑到并发的问题,不能直接获取最后一条记录 但是在网上查了一下SELECT LAST_INSERT_ID()这个语句是根据上下文的,不会因为并发而出错2.推荐但是查了一下官方,官方推荐使用下面这种方式: 在使用sql语句的时候设置useGeneratedKeys=”true”, keyProperty为主键<insert id="in原创 2016-03-24 11:36:41 · 1899 阅读 · 0 评论 -
mysql连接池-druid
1.解决情况 因为前面使用连接池出现问题了,所以放弃了使用连接池。然后因为业务的需要,会在一个页面发生6次sql请求,一次connection0.3s,sql语句0.3s,如果直接使用jdbc的原生方式,6个sql查询大概在3.6秒左右,这个时间是不能被接受的。 于是打算又使用连接池,这个时候发现了阿里的druid,配置了一下,发现效果非常好!只需要300ms,应该是一次connect原创 2016-03-22 16:33:42 · 1885 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩
缓存穿透、缓存击穿、缓存雪崩缓存穿透原因缓存穿透指查询一个一定不存在的数据。由于缓存是命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能 DB 就挂掉了,如果有人利用不存在的 key 频繁攻击我们的应用,这就是漏洞。解决方案缓存不存在的数据如果一个查询返回的数据...原创 2018-04-12 15:06:56 · 356 阅读 · 0 评论