持久层
袁小黑
这个作者很懒,什么都没留下…
展开
-
同事面试遇到的奇怪问题
近日同事面试资深Java开发工程师在回到MySql索引的时候,遇到了个奇怪的问题:为什么有最左匹配原则? 其实我理解遇到这个问题有可能是面试官对前面的回答不是很满意,随口问了句这种话,毕竟这种话问出来有点为难的意思。 然后我们拿这个问题来讨论下,真是八仙过海,谁都有谁的答案,谁都不服谁。也许这就是程序员吧。 下面是我的个人理解,如果读者有更好的想法,欢迎回复加入讨论。B+树的结构 从上面可以看出来B+树的索引结构。 其实根节点只存建索引的数据段。真正的da原创 2020-11-23 14:04:30 · 364 阅读 · 1 评论 -
Spring中的Transactional中为什么会有readOnly=true
Transactional是spring中集成的事务,事务有着ACID的特性。A原子性在update,insert的时候都作用比较明显。为什么Spring在Transactional中会有一个readOnly呢?我们来做一个实验:首先造一些数据: @Test public void testInsertBatch() { //insert 十万的数据 ...原创 2019-07-14 19:28:35 · 850 阅读 · 0 评论 -
MySQL中的alter table命令的基本使用方法及提速优化
一、基本用法1. 增加列 1 alter table tbl_name add col_name type 例如, 给pet的表增加一列 weight, 1 mysql>alter table pet add weight int; 2. 删除列 1 alter ta...转载 2019-06-27 12:49:05 · 2946 阅读 · 0 评论 -
使用 Redis的SETNX命令实现分布式锁
SETNX命令简介SETNX key value将key的值设为value,并且仅当key不存在。若给定的key已经存在,则SETNX不做任何操作。SETNX 是SET if Not eXists的简写。返回整数,具体为1,当 key 的值被设置 0,当 key 的值没被设置使用SETNX实现分布式锁多个进程执行以下Redis命令:SETNX lock.foo <...转载 2019-06-26 15:23:55 · 1192 阅读 · 0 评论 -
Redis 过期键回收的注意点
1. Redis 过期声明有如下4中情况:expire <key> <ttl> 命令用于将键key设置为ttl秒 pexpire <key> <ttl> 命令用于将键key设置为ttl毫秒 expireat <key> <timestamp> 命令用于将键key的过期时间设置为timestamp指定的秒数时间戳 pe...原创 2019-06-03 22:38:15 · 955 阅读 · 0 评论 -
深入浅出数据库索引原理
前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”。当时我就楞了...转载 2018-05-24 13:34:20 · 138 阅读 · 0 评论 -
从SQL语句的角度提高数据库的访问性能
什么是执行计划?执行计划是依赖于什么信息。执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式。可见,执行计划并不是固定的,它是“个性化的”。产生...转载 2018-05-25 13:18:17 · 174 阅读 · 0 评论 -
Jdbc编程
1、什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,是用Java语言编写的类和接口组成的,可以为多种关系型数据库提供统一访问的接口。JDBC提供了一种基准,说白了,也就是sun公司为各大数据库厂商的关系型数据库连接java所制定的规范,因此他们只需要实现JDBC的接口规范即可,而具体的实现是由各...转载 2018-05-06 13:10:55 · 266 阅读 · 0 评论 -
Hibernate-2映射 Java 的时间, 日期类型
2. 映射 Java 的时间, 日期类型1). 两个基础知识:I. 在 Java 中, 代表时间和日期的类型包括: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.转载 2015-01-10 22:32:36 · 1093 阅读 · 0 评论 -
Hibernate-1
1. Session:1). 对 Session 缓存的理解2). Session 的 API 方法:save,persist,saveOrUpdateupdate, mergeget,load -- get 和 load 的区别deletecloseflushrefreshclearevict3).转载 2015-01-10 21:59:12 · 388 阅读 · 0 评论 -
Hibernate学习笔记—— 1
1、Hibernate是目前最流行的ORM框架之一原创 2014-11-02 11:04:24 · 382 阅读 · 0 评论