数据库
文章平均质量分 62
BtWangZhi
这个作者很懒,什么都没留下…
展开
-
MYSQL--悲观锁与乐观锁
1 悲观锁,排他锁,当数据上锁以后,其他线程不能去操作该数据,只能等待占用线程尽快结束占用。这种方法并发效率低。Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); try{原创 2017-09-18 11:22:17 · 1586 阅读 · 0 评论 -
MySql--MVCC
看完这些应该成神了一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, jstack, jmap, jconsole, jinfo, jhat, j原创 2017-07-12 10:52:19 · 689 阅读 · 0 评论 -
数据库-ACID
选择要添加文档的架包-》右键properties 按照图片上的顺序选择架包对应的javasource的位置 选择成功后悬停在要查看的位置,按F1,出现如下: 就可以查看相关信息了。原创 2020-04-11 12:46:30 · 848 阅读 · 1 评论 -
MySQL--锁异常
1 事务不设置超时时间,长时间不提交。 @Override @Transactional public void addUser06(){ User user=new User(); user.setName("测试"+1); user.setPassword("123"); userDao.insertSelect...原创 2019-03-24 14:14:38 · 591 阅读 · 1 评论 -
Mysql--关于NULL
公司DBA强制字段设置not null,不明觉厉,看了一下网上的文章,整理如下创建表CREATE TABLE `test02` ( `id` int(11) NOT NULL AUTO_INCREMENT, `col1` varchar(255) NOT NULL, `col2` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), ...原创 2020-03-26 17:12:41 · 393 阅读 · 0 评论 -
MySQL--行锁
偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度也最高。InnoDB与MyIsAm的最大不同有两点,一是支持事务,二是采用了行级锁,...原创 2019-01-28 23:15:46 · 325 阅读 · 0 评论 -
MySQL--表锁
从对数据操作的类型来分读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。写锁(排他锁):当前写操作没有完成前,它会阻断其他写锁和读锁。从对数据操作的粒度来分三锁:表锁(偏读)偏向MyISAM存储引擎,开销下,加锁快,无死锁;锁定粒度大,发生锁冲突的概率最高,并发读最低。给mylock表上读锁,给book表上写锁lock table mylock read,boo...原创 2019-01-28 22:04:39 · 171 阅读 · 0 评论 -
MySQL--索引
单表优化案例创建表CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `birthday` datetime DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) EN...原创 2019-01-23 23:30:57 · 250 阅读 · 0 评论 -
MySQL--存储引擎
1 MYSQL架构2 存储引擎2.1 常用命令2.1.1 查看数据库引擎- show engines;2.1.2 查看当前默认的引擎-- show variables like ‘%storage_engine%’;2.2 InnoDB与MyIsAm比较MyIsAm对事务不支持,InnoDB支持MyIsAm即使操作一行数据也会锁住整个表,InnoDb行锁操作时只锁住一行,不对其他...原创 2019-01-22 22:38:51 · 2516 阅读 · 0 评论 -
MySQL--全局查询日志
1 开启该功能set global general_log=1;以表格的形式存储SQL,set global log_output='TABLE';记录会存储到mysql库的general_log表中,可以通过如下查看select * from mysql.general_log;...原创 2019-01-27 23:12:54 · 577 阅读 · 1 评论 -
MySQL--范式
第一范式:数据库表中的所有字段都是单一属性,不可再分的。第二范式:数据库的表中不存在非关键字段对任一候选关键字段的部分函数依赖。第三范式:如果数据表中不存在非关键字字段,对任意候选关键字字段的传递函数依赖则符合第三范式。BC范式:在第三范式的基础之上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。字段大小:在对数据进行比较操作时,同样的数据,字符处理往往...原创 2019-02-21 23:40:45 · 207 阅读 · 0 评论 -
MySQL--SQL优化,不基于索引
COUNT()和MAX()优化COUNT(*)包含为空的COUNT(id)不包含为空的列同时查出2006和2007年的定影数量。SELECT COUNT(release_year=’2006’ OR NULL) AS ‘2006年电影数量’,COUNT(release_year=’2007’ OR NULL) AS ‘2007年电数量FROM file’子查询优化子查询优化为joi...原创 2019-03-03 23:55:24 · 196 阅读 · 0 评论 -
MySQL--字段类型选择
在对数据进行比较操作时,同样的数据,字符处理往往比数字处理慢。列的长度越小,利于性能提升。Char与Varchar如果列中要存储的数据长度差不多是一致的,则应该考虑用char,否则应该考虑用varchar。如果列中的最大数据长度小于50Byte,则一般也考虑用char。大于50就用Varchar。Float和DecimalDecimal用于存储精确数据,而float只能用于存储非精确数...原创 2019-03-03 23:56:51 · 1134 阅读 · 0 评论 -
MySQL--表的拆分
表的垂直拆分,控制表的宽度。1 经常一起查询的列放到一起。Text,blob等大字段拆分到附加表中。表的水平拆分为了控制表的大小可以进行表的水平拆分。...原创 2019-03-03 23:58:55 · 724 阅读 · 0 评论 -
MySQL--SQL执行分析工具
explain使用Explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQl是如何处理你的SQl语句的,分析你的查询语句或是表结构的性能瓶颈。表的读取顺序,数据读取操作的操作类型哪些索引可以使用,哪些索引被实际使用。表之间的引用,每张表有多少行被优化器查询。Explain各个列名说明idid相同,执行顺序由上到下。ID不同,如果是子查询,id的序号会递增,id值...原创 2019-03-04 00:00:25 · 3286 阅读 · 0 评论 -
MySQL--参数调优
innodb_buffer_pool_size=765M用于配置Innodb的缓冲池的大小,如果数据库中只有Innodb表,则推荐配置为总内存的75%。innodb_buffer_pool_instances=8可以控制缓冲池的个数,默认情况下只有一个缓冲池。innodb_log_buffer_size=9M日志缓冲区的大小。innodb_flush_log_at_trx_commit...原创 2019-03-09 22:45:17 · 180 阅读 · 0 评论 -
MySQL--实战总结
1 将存在更新部分字段信息,不存在则执行插入合并为一个SQL,需要创建唯一索引CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `createtime` datetim...原创 2019-03-21 19:58:36 · 230 阅读 · 1 评论 -
MySQL--函数
1 FIND_IN_SET(str1,str2)在str2中查询str1,存在返回大于0.不存在则返回0.select find_in_set('1','0,1,2,3')返回2select find_in_set('11','0,1,2,3')返回0测试数据:CREATE TABLE `person` ( `Id` int(11) NOT NULL AUTO_INCREME...原创 2019-04-23 14:38:31 · 129 阅读 · 0 评论 -
MySQL--show profile
showprofile是mysql提供用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优的测量。默认情况下,参数处于关闭状态,并保存最近15次的运行结果。开启功能,默认是关闭的,使用前需要开启show variables like ‘profiling’开启set profiling=on;运行SQLselect * from T_TEST;查看结果show p...原创 2019-01-27 23:02:24 · 202 阅读 · 0 评论 -
MySQL--慢查询
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中,long_query_time的默认值为10,意思是运行10秒以上的语句。默认情况下,MySQL数据库没有开启慢查询日志,...原创 2019-01-27 22:21:06 · 313 阅读 · 1 评论 -
MySql--Order By 和Group By优化
Order By1 排序往往都会出现文件排序,可以通过索引来优化排序,与查询一样,同样需要满足最左前缀原则,即用到的索引列开头列不能断,中间不能断。。。仔细观察如下案例。如下,order by中完全按照索引列的顺序来创建,所以不会出现文件排序。比较特殊的情况,顺序要么是同升,要么是同降。ORDER By 满足两种情况,会使用Index方式排序:ORDER By语句使用索引最左...原创 2019-01-26 23:51:09 · 401 阅读 · 0 评论 -
MySql--数据表中文乱码解决办法
在命令行中,MySQL中的中文字符 显示的表格乱码;解决方案:转载 2016-05-21 12:42:19 · 539 阅读 · 0 评论 -
SQL--分组查询
测试数据DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `object` varchar(255) DEFAULT NULL, `number` int(11) DEFAULT NULL,原创 2017-07-02 19:00:21 · 567 阅读 · 0 评论 -
SQL--锁
1 悲观锁 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。2 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会原创 2017-07-14 23:59:36 · 245 阅读 · 0 评论 -
MySQL--索引
1.1 索引的用处 索引是数据的位置,方便快速定位到数据的位置,索引是有代价的,提高了查询速度,降低了增持改查的数据,因为每一个的操作都会引起数据的位置的变化。 1.2 索引使用的场景 一般在比较频繁的列上加,而且在重复度低的列上加比较好。比方说在性别列加的话,因为性别只有男和女,完全无意义,加了反而会加剧索引文件的大小,而比方说加到身份证上就比较合理。 1.3 索引种类 key:普通索引原创 2017-08-05 20:27:52 · 289 阅读 · 0 评论 -
SQL--子查询
1、单行子查询 select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK');2、多行子查询 SELECT ename,job,sal FROM EMP WHERE deptno in ( SELEC转载 2017-09-05 23:59:35 · 330 阅读 · 0 评论 -
SQL Server--实现 Limit m, n 的功能
1 如果要查询上述结果中第 7 条到第 9 条记录,则相应的SQL语句是:select top 3 id from tablename where id not in ( select top 6 id from tablename )2 取第m条到第n条记录:select top (n-m+1) id from tablename where id not in ( s转载 2017-09-06 00:03:35 · 2349 阅读 · 0 评论 -
SQL--基本语句
1 建表,主键约束,外键约束。CREATE TABLE course ( cno int(11) NOT NULL AUTO_INCREMENT, cname char(20) DEFAULT NULL, cteachername char(20) DEFAULT NULL, PRIMARY KEY (cno))CREATE TABLE student ( sno int(11原创 2017-06-06 15:31:10 · 532 阅读 · 0 评论 -
SQL--函数
1 在SQL中进行处理 如下代码中的date_format函数,将日期转为 2017-11-03的格式。SELECT (@i:=@i+1) AS rownum, id,content,date_format(createtime,'%Y-%m-%d') AS createtime,status FROM t_message join (select原创 2017-11-03 15:26:09 · 282 阅读 · 0 评论 -
SQL--单表递归查询
1 做项目的时候碰到单表递归查询的情况, 不比如部门、子部门。根据root部门ID查询该部门下的所有的子部门。CREATE TABLE `dept` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `deptid` int(11) DEFAULT NULL, PRIMARY KE...原创 2018-05-17 00:17:57 · 2521 阅读 · 0 评论 -
数据库--查询
多对多查询 表:CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;CREATE TABLE...原创 2018-06-10 15:14:10 · 203 阅读 · 0 评论 -
MySQL--存储过程
在工作中用到存储过程,使用场景,动态创建表,需要用到存储过程。 1 Navicat创建存储过程。 填写的imageid类似于方法的形参, 存储过程代码BEGIN #Routine body goes here...procedure SELECT * FROM image WHERE id=imageid;END执行 注意在输入框中输入的对应于下...原创 2018-07-11 01:55:22 · 256 阅读 · 0 评论 -
MySQL--存储过程批量修改表结构
-- 给customer表添加upload_date字段,将customer_nbr字段的长度改为20,同时将创建时间赋值给导入时间DELIMITER //drop procedure if exists customerAddField// CREATE PROCEDURE customerAddField() BEGIN DECLARE tableName varchar...原创 2018-10-25 19:58:45 · 1826 阅读 · 0 评论 -
SQL--特殊场景SQL整理
1 场景:对指定的字段进行分组,用GROUP_CONCAT对另外的一个字段进行连接,但是需要保证去重,构造数据如下:SELECT GROUP_CONCAT(DISTINCT password SEPARATOR ';') FROM user GROUP BY name查询结果:有两个password为123,但是在结果中只有一个123,做到了去重的效果。参考博客:https:/...原创 2018-11-30 14:22:05 · 345 阅读 · 0 评论 -
Mysql--索引
索引的好处:1 可以帮助服务器避免排序。B-Tree索引在如下的情况中会生效1 全值匹配–联合索引在查询中均用到了,SELECT * FROM peopleWHERE last_name="tang"AND first_name="xi"AND createtime='2019-01-09 00:00:00'2 匹配最左前缀–使用组合索引的第一列EXPLAIN SELEC...转载 2019-01-10 23:37:02 · 186 阅读 · 0 评论 -
MySQL--基于数据库的号码自增生成实践
需求:生成指定规则递增的号码:年月日+当天的第几个,如:201901140001,即209年1月14日哪一天的第一个号码,关键点1 获取当天的号码个数、2 加0处理,如当天第一个,即0+1=1.加0,则为0001,保持四位。采用LPAD函数。测试表CREATE TABLE `test01` ( `id` int(11) NOT NULL AUTO_INCREMENT, `numb...原创 2019-01-14 10:26:27 · 410 阅读 · 0 评论 -
MySQL--In与Exists查询优化
1 小表驱动大表,即小的数据集驱动大的数据集。SELECT * FROM table WHEREEXIST (SUBQUERY)将主查询的数据,放到子查询中做验证,根据验证结果TRUE或FALSE,来决定主查询的数据结果是否得以保留。...原创 2019-01-25 23:01:40 · 252 阅读 · 0 评论 -
MySql--事务--隔离性
1 隔离性隔离性指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要隔离。1.1 如果不考虑隔离性,会引发安全问题如下:1 脏读:一个事务读取了另外一个事务修改但是还未提交的数据,如果这些数据被回滚,则读到的数据是无效的2 不可重复读:在同一个事务中,多次读取同一数据返回的结果有所不同,3 幻读:一个事务读取了几行记录后,另外一个事务插入一些记录,...转载 2018-12-16 23:31:35 · 259 阅读 · 0 评论 -
MySql--access denied for user 'root'@'localhost'(using password:YES)解决方案
安装Mysql后利用SQLyogEnt启动是提示“access denied for user 'root'@'localhost'(using password:YES)”,开始我还为是因为是密码问题,后来上网查了查才知道root权限问题,我想可能是因为win7系统我在安装时没用以管理员身份进行安装,所以root角色没有权限,从网上找了一个解决方案解决了,在这里记录一下:1. 管理员登陆转载 2017-01-18 20:26:19 · 634 阅读 · 0 评论