数据库
文章平均质量分 70
aa
云川之下
这个作者很懒,什么都没留下…
展开
-
mysql中update语句的返回值
mybatis中执行,update函数,那么这个函数的返回值是matched(匹配的)行数还是changed(受影响的)行数呢?默认情况下是matched记录数,并不是changed记录数如何让其返回值为受影响(changed)的记录数呢?只需在mysql数据连接url参数加useAffectedRows=true即可jdbc.url=jdbc:mysql://localhost:3306/ssm?useAffectedRows=true...原创 2022-04-15 11:32:02 · 4723 阅读 · 0 评论 -
mysql 行锁升级为表锁
文章目录行锁升级为表锁在不使用索引的情况下加锁在使用普通索引的情况进行加锁范围性查询测试总结:参考行锁升级为表锁总所周知,MySQL 的 InnoDB 存储引擎支持事务,支持行级锁(InnoDB 的行锁是通过给索引项加锁实现的)。得益于这些特性,数据库支持高并发。如果 InnoDB 更新数据使用的不是行锁,而是表锁呢?是的,InnoDB 其实很容易就升级为表锁,届时并发性将大打折扣了。常用的索引有三类:主键、唯一索引、普通索引。主键不由分说,自带最高效率的索引属性;唯一索引指的是该属性值重复率为0,一原创 2022-04-14 10:37:12 · 3429 阅读 · 3 评论 -
【mysql】Windows下MySQL-5.7版本下载与安装教程
linux下mysql的安装与使用Windows下MySQL-5.7版本下载与安装教程原创 2021-09-18 13:58:44 · 1541 阅读 · 0 评论 -
【mysql】事务隔离与mvcc的误区(事务是什么时候开始的)
文章目录问题验证问题我们知道 mysql的InnoDB的事务隔离机制是通过mvcc实现的,比如在可重复读模式下,开启一个事务,那么当前事务的操作的记录会增加一个事务id,通过事务id进行可重复读的实现,那么存在一个误区:当前的事务是什么时候真正开始的?答案:begin语法不会立即开启一个事务,而是到真正执行语句时,才会真正创建验证我们现在存在一个课程表:select * from course;2.我们开启一个事务A,但暂不执行任何语句:mysql> begin;Query原创 2021-01-20 11:09:27 · 192 阅读 · 0 评论 -
【mysql】ACID靠什么保证的?
ACID靠什么保证的?A 原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sqlC一致性由其他三大特性保证、程序代码要保证业务上的一致性I 隔离性由MVCC来保证D持久性由内存+redo log来保证,mysql修改数据同时在内存和redo log记录这次操作,宕机的时候可以从redo log恢复。redolog的刷盘会在系统空闲时进行...原创 2021-09-15 22:45:53 · 2187 阅读 · 0 评论 -
ShardingSphere分库分表实战--HintShardingStrategyHint强制路由
文章目录HintShardingStrategy配置参考HintShardingStrategyHint强制路由,通过Hint指定分片值而非从SQL中提取分片值的方式进行分片的策略。在分库分区中,有些特定的SQL,Sharding-jdbc、Mycat、Vitess都不支持(可以查看相关文档各自对哪些SQL不支持),例如:insert into table1 select * from table2 where …这种SQL 路由很麻烦,需要解析table2的路由(是在ds0 /ds1 table2_原创 2021-08-19 18:38:01 · 2476 阅读 · 2 评论 -
【分库分表】ShardingSphere分库分表实战--inline策略
参考【分库分表】sharding-jdbc—分片策略Sharding JDBC(四) 分片策略一:标准分片策略StandardShardingStrategy原创 2021-08-18 22:34:15 · 2755 阅读 · 1 评论 -
【分库分表】sharding-jdbc(shardingsphere)—分片策略
文章目录1. 分片策略2. 分片算法3. 自定义分片算法3.1 标准分片策略(StandardShardingStrategy)3.1.1 a、PreciseShardingAlgorithm实现:(Precise处理 = 和 in 的路由)3.1.2 b. PreciseShardingAlgorithm + RangeShardingAlgorithm3.2 ComplexShardingStrategy参考1. 分片策略Sharding-JDBC认为对于分片策略存有两种维度:数据源分片策略(D原创 2021-08-18 19:07:23 · 3863 阅读 · 0 评论 -
Mybatis-Plus Boot 版本 mybatisplus-boot-starter
mybatisplus-spring-boot-starter 为 Mybatis-Plus 快速集成 spring-boot 简化配置而生,不再需拿 MyBatis 和 Hibernate 相比,mybatis-plus 作为 mybatis 的好拍档补充了它的短板,让 mybatis 兼具了 hibernate 的优点。mybatisplus-boot-starter 项目及实例mybatis-plus 使用说明帮助文档mybatis 实战教程、应用实例 | Demo,参见原文:Spring转载 2021-08-17 22:55:22 · 8987 阅读 · 0 评论 -
【mysql】MySQL 分库分表方案,总结的非常好!
文章目录参考参考添加链接描述原创 2021-08-17 21:59:32 · 2131 阅读 · 0 评论 -
【mysql】集群(主从、互为主从、多主、多级主从)
1. 一主一从最简单的是一主一从,主服务器上的数据可以往从服务器同步,而反之不可以,即从数据库上的数据不可以同步至主服务器。先配置配置master主服务器,再配置从服务器,核心是从服务器有个属性,指向主服务器。2. 一主多从基于一主一从基础上,再新增一个作为主服务器的从服务器,而多个从节点之间没有任何关系3. 多级主从基于一主一从基础上,假设A是主,B是从,再新增一个C作为B的从节点,这样就是三层结构。4. 互为主从的集群基于主从架构,2个服务器互为主从,即配置A的master属性指向B,A原创 2021-08-17 20:02:47 · 4369 阅读 · 0 评论 -
【mybatis】必须为元素类型 “mapper“ 声明属性 “namespace“解决
在使用mybatis进行mapper.xml测试的时候发生"必须为元素类型 “mapper” 声明属性 “namespace” "的错误:网上找了一下发现我的UserMapper.xml下应该引错了:应该将Config改成Mapper原创 2021-04-13 20:14:44 · 930 阅读 · 0 评论 -
【mybatis3】一级缓存和二级缓存
文章目录1. 概述1.1 一级缓存1. 概述1.1 一级缓存Mybatis的一级缓存是默认开启的,它只相对于同一个SqlSession有效,所以也称之为SqlSession缓存。当参数和SQL完全相同的情况下,使用同一个SqlSession对象调用同一个Mapper方法,当第1次执行SQL语句后,MyBatis会自动将其放在缓存中,后续再次查询时,如果没有声明需要刷新,且缓存没有超时,会直接取出此前缓存的数据,而不会再次发送SQL到数据库。例如: public void selectUse原创 2021-04-11 22:34:50 · 325 阅读 · 0 评论 -
【mybatis3】调试/断点打印日志
文章目录基于《入门例子(完整可运行)》如果想开启日志,显示执行的sql,需要如下设置:SqlMapConfig.xml <settings> <setting name="logImpl" value="LOG4J"/> </settings>并引入依赖: <dependency> <groupId>log4j</groupId>原创 2021-04-11 00:51:13 · 462 阅读 · 0 评论 -
【mybatis】架构实现原理--2 mybatis的几种写法(mapper接口)
文章目录1. mapper定义的两种写法1.1 mapper接口+mapper.xml文件的方式1.2 mapper接口加注解的方式2. 调用的两种写法2.1 使用SqlSession的selectOne,selectList,selectMap方法2.2 调用mapper接口的方法1. mapper定义的两种写法1.1 mapper接口+mapper.xml文件的方式mapper接口如下:package com.mapper;import com.pojo.Teacher;import j原创 2021-04-10 15:55:25 · 320 阅读 · 0 评论 -
【mybatis】入门例子(完整可运行)
文章目录1. 配置依赖2. 配置数据库连接3. 根据数据库的结构编写对应的Bean类4. 针对该类编写该类的映射user.xml文件5. mybatis入口配置5. Dao类测试类1. 配置依赖 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <v原创 2021-04-08 10:27:00 · 208 阅读 · 0 评论 -
【jdbc】 jndi与“Java:comp/env/“语法
文章目录1. 什么是jndi2. jndi配置2.1 weblogic例子:2.2 其他服务器1. 什么是jndijndi的作用看起来和datasource查不多,定义一个数据源,比如更换了数据库或需要更改配置信息,我们只需要修改注册信息,代码中引入的是一个key(资源名),只要key不变,因此代码也不需要修改。传统用法,非jndi:Connection conn=null; try { Class.forName("com.mysql.jdbc.Driver", true, Thread.c原创 2021-04-01 15:51:29 · 1562 阅读 · 0 评论 -
【mysql】 java访问mysql入门例子
CREATE TABLE `student` ( `id` int(11) NOT NULL, `name` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8insert into `student` (`id`, `name`) values('1','zhangsan');insert into `student` (`id`, `name`) values('2','li原创 2021-03-31 19:10:13 · 134 阅读 · 0 评论 -
【jdbc】数据库连接池(数据源)【汇总】
文章目录概述HikariCPDruid概述《高性能数据库连接池的内幕》介绍了为什么要使用连接池《大话数据库连接池》 连接池的发展历史《数据库连性池性能测试(hikariCP,druid,tomcat-jdbc,dbcp,c3p0)》 压力测试,不同连接池的性能对比《数据库连接池优化配置(druid,dbcp,c3p0)》 介绍如何优化配置连接池,并给出3种连接池的参数介绍HikariCP在Spring Boot 2.0版本中,默认数据库池技术已从Tomcat Pool切换到HikariCP《原创 2021-03-31 14:11:25 · 260 阅读 · 0 评论 -
【pg Postgres】 Postgres解决Permission denied for relation
以superUser进入数据库:psql -U postgres -d postgres切换到mydb数据库:\c mydb //赋予所有表的所有权限给xiaomingGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO xiaoming; //单独 赋予tuser表的所有权限给wechart用户GRANT ALL PRIVILEGES ON tuser TO wechart; 如果不知道用户,可以查询所有的用户,然后供参考:s原创 2020-10-19 15:13:41 · 11003 阅读 · 0 评论 -
【mysql】表锁、行锁、间隙锁、共享锁(读锁)、排他锁(写锁)、Next-Key Locks 之间的关系
参见:《【mysql】MySQL中的锁(表锁、行锁、间隙锁、共享锁、排他锁)》原创 2021-01-23 19:18:13 · 1897 阅读 · 2 评论 -
【mysql】缓冲池(buffer pool)
《MySql 缓冲池(buffer pool) 和 写缓存(change buffer) 转》转载 2021-01-21 20:40:21 · 238 阅读 · 0 评论 -
【mysql】查询缓存和BufferPool区别
查询缓存MySQL Server首选会从查询缓存中查看是否曾经执行过这个SQL,如果曾经执行过的话,之前执行的查询结果会以Key-Value的形式保存在查询缓存中。key是SQL语句,value是查询结果。我们将这个过程称为查询缓存!Caches位于Server层BufferPoolBuffer Pool位于存储引擎层。Buffer Pool就是MySQL存储引擎为了加速数据的读取速度而设计的缓冲机制。参考:《你有没有搞混查询缓存和BufferPool?谈谈看!》...原创 2021-01-21 20:11:52 · 951 阅读 · 0 评论 -
【mysql】redo log日志是什么?有啥用?
文章目录引出 redo log 的作用思考一个问题:redo log blockredo log bufferredo log的刷盘时机推荐参数引出 redo log 的作用前面我们一起学习了MySQL undo log相关的知识点,看下面这张脑图:磁盘上的数据文件叫表空间文件,表空间有挺多的,比如系统表空间、undo log 表空间、你也可以让create出来的每张table都有自己单独的表空间。总之MySQL会将表空间数据页通过磁盘IO加载进缓存页中。SQL执行器会执行你发送给MySQL的SQ转载 2021-01-21 19:09:32 · 2695 阅读 · 2 评论 -
【mysql】MySQL 中 Redo 日志与 Binlog 日志顺序一致性问题
文章目录前言1. 为什么MySQL有binlog,还有redo log?2. 事务是如何提交的?事务提交先写binlog还是redo log?如何保证这两部分的日志做到顺序一致性?2.1 MySQL没有开启Binary log的情况下2.1 MySQL开启Binary log的情况下?前言首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的。而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的。现在我们来讨论一下MySQL主从复制过程转载 2021-01-21 16:48:15 · 4450 阅读 · 3 评论 -
【mysql】MYSQL的日志(redo log,binlog)顺序读写,数据文件随机读写以及linux底层原理
文章目录前言1. 对于redo log,binlog这种日志进行的磁盘顺序读写2. 对于表空间磁盘文件里的数据页进行的磁盘随机读写3. Linux操作系统的存储系统4. 数据库服务器使用的RAID存储架构4.1 RAID存储架构的电池充放电原理4.2 RAID锂电池充放电导致MYSQL数据库性能抖动的优化4.3 解决RAID锂电池充放电导致的存储性能抖动的解决方案前言redo log用于恢复bufferpool,binlog用户恢复聚簇索引对应的ibd文件1. 对于redo log,binlog这种日转载 2021-01-21 14:43:50 · 3077 阅读 · 0 评论 -
【mysql】详细分析MySQL事务日志(redo log和undo log的区别)
文章目录概述1. redo log1.1 redo log和二进制日志(binlog)的区别1.2 redo log的基本概念1.2.1 log buffer中的日志刷入磁盘的策略1.3 日志块(log block)1.4 log group和redo log file1.5 redo log的格式1.6 日志刷盘的规则1.7 数据页刷盘的规则及checkpoint1.8 LSN超详细分析1.9 innodb的恢复行为1.10 和redo log有关的几个变量2.undo log2.1 基本概念2.2 un转载 2021-01-21 12:06:43 · 841 阅读 · 0 评论 -
【mysql】show engine innodb status\G
参考:《show engine innodb status\G》原创 2021-01-19 17:22:14 · 1079 阅读 · 0 评论 -
【mysql】MySQL中的锁原理(表锁、行锁、间隙锁、共享锁、排他锁)
文章目录1. 概述2. MySQL表级锁的锁模式(MyISAM)2.1 MySQL表级锁的锁模式2.2 锁模式的兼容如下表,MySQL中的表锁兼容性:2.3 如何加表锁2.4 并发锁2.5 MyISAM的锁调度3. InnoDB锁问题3.1 事务(Transaction)及其ACID属性3.2 并发事务带来的问题3.3 事务隔离级别3.4 获取InonoD行锁争用情况3.5 InnoDB的行锁模式及加锁方法3.6 InnoDB行锁实现方式(实现原理)3.7 间隙锁(Next-Key锁)3.8 什么时候使转载 2021-01-19 16:17:57 · 2828 阅读 · 0 评论 -
【mysql】全表扫描过程 & 聚簇索引 区别和联系
InnoDB的数据是保存在主键索引上的,所以全表扫描实际上是直接扫描表t的主键索引。如果没有主键,聚簇索引就会优先存在唯一索引、隐藏列参考:《Mysql缓存-全表扫描过程、LRU算法》原创 2021-01-16 19:38:31 · 2438 阅读 · 2 评论 -
【mysql】Mysql中单路排序和双路排序详解
文章目录索引排序和文件排序介绍:文件排序出现的几种情况:索引排序和文件排序介绍:当对sql进行order by排序的时候,需要尽可能的使用索引排序,如果无法使用索引排序的话,mysql就会使用文件排序。文件排序出现的几种情况:order by 字段不是索引字段order by 字段是索引字段,但是 select 中没有使用覆盖索引,如:select * from staffs order by age asc;order by 中同时存在 ASC 升序排序和 DESC 降序排序,如:selec转载 2021-01-14 15:00:52 · 850 阅读 · 2 评论 -
【mysql】慢查询日志 long_query_time
文章目录1 概念2 参数3 配置3.1 slow_query_log3.2 slow_query_log_file3.3 long_query_time3.4 log_output3.5 log-queries-not-using-indexes3.6 log_slow_admin_statements3.7 Slow_queries4 mysqldumpslow工具1 概念MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。具体环境中,转载 2021-01-14 14:18:54 · 4065 阅读 · 1 评论 -
【mysql】 range查询在数据量不同情况下,不一定索引走索引
aaa原创 2021-01-10 17:35:24 · 972 阅读 · 0 评论 -
【mysql 5.7】 什么是索引下推?(第二篇)
aa转载 2021-01-09 21:12:15 · 736 阅读 · 0 评论 -
【mysql 5.7】什么是最左原则、什么是索引下推?
参考:《什么是索引下推》《MySQL联合索引与索引下推图文详解》《什么是索引下推?》转载 2021-01-09 20:19:07 · 695 阅读 · 0 评论 -
【mysql 5.7】like ‘XX%‘一定会使用索引吗 & 离散性对like的影响(索引选择性)
文章目录1. 问题的引入1.1 验证1.1.1 案例1 like ‘%测试%’1.1.2 案例2 like ‘测试%’1.1.3 案例3 like ‘测试1%’1.2 总结1. 问题的引入在非覆盖索引场景下,大家知道Mysql索引有最左原则,所以通过 like '%XX%'查询的时候一定会造成索引失效(5.7版本覆盖索引可以走索引),一般采用like 'XX%'右边匹配的方式来索引。但是这样一定会使用索引吗?答案是否定的,不一定会用。附:在覆盖索引下, like '%XX%'和like '转载 2021-01-09 18:17:39 · 900 阅读 · 0 评论 -
【mysql】B+树重复值问题 & 非唯一索引
PPT上面说的初始假设没有重复键,于是很多人误认为B+树不可以存在重复值。而且在插入操作的时候不知道改将重复值如何处理。B+树索引结构常采用"溢出页"处理重复出现的键值。PPT上面是这么说的:如果B+树出现了两个值相等的情况,那么B+树不会改变原有结构,也不会在叶子结点里面增加一项,而是将这个重复值作为一个新的节点,并用原本B+树上的节点的指针指向它。参考:《B+树重复值问题》...转载 2021-01-09 16:43:23 · 4123 阅读 · 3 评论 -
【mysql 5.7】最左原则 & like查询%在前为什么不走索引
《从根上理解SQL的like查询%在前为什么不走索引?》转载 2021-01-09 16:20:28 · 3744 阅读 · 1 评论 -
【mysql】MySql中delimiter的作用是什么?
其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。如输入下面的语句:show tables会输入用户输入结束符:默认结束符是分号,输入分号回车后才显示查询结果:如果你执行的是个存储过程,那么中间的某个语句以分号结尾:mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)mysql&转载 2021-01-08 20:33:25 · 397 阅读 · 0 评论 -
【mysql】MySQL 1130错误,无法远程连接
MySQL 1130错误,无法远程连接原因:可能是你的帐号不允许从远程登陆,只能在localhost。登入mysql后,更改"mysql" 数据库里的 “user” 表里的 “host"项,从"localhost"改称”%"步骤1登陆mysql:[root@localhost mysql]# bin/mysql -uroot -pEnter password:步骤2mysql> use mysql;查看用户表配置:mysql> select user,host from原创 2021-01-08 11:10:33 · 190 阅读 · 0 评论