MySQL
文章平均质量分 64
飞翔的咩咩
我家傻咩咩啊!飞在花丛中啊
展开
-
Java开发者MySQL使用手册
这个是对Java开发人员的MySQL使用手册.乱序持续更新中,建议不要使用5.6以下的版本,至少5.7以上.1.MySQL的数据类型MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。这个一定要熟悉,因为关系到你设计的表是否合理.可以参考MySQL 数据类型.2.字符集不要设置为utf8 ,改为utf8mb4.COLLATE使用utf8mb4_general_ci3.使用 int 或者 bigint 类型。如果需要存储到分的维度,需要 *100 进行放大.或者原创 2020-07-03 01:23:44 · 284 阅读 · 0 评论 -
Mybatis3源码全解析
Mybatis架构:图自:MyBatis整体架构_tiankong_12345的博客-CSDN博客_mybatis架构Mybatis架构分三层:第一层:SqlSession这是使用mybatis的主要接口,通过这个接口我们可以执行命令,获取mapper或者管理事务。Through this interface you can execute commands, get mappers and manage transactions.第二层:核心处理层配置解析模块:myb原创 2022-05-14 15:14:32 · 1090 阅读 · 0 评论 -
MySQL主从复制报错Authentication plugin ‘caching_sha2_password‘ reported error: Authentication
在从库上执行 show slave status\G显示报错:Last_IO_Error: error connecting to master 'repl@127.0.0.1:3316' - retry-time: 60 retries: 2 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.考虑到我的MySQL8 ,原创 2021-03-07 15:16:09 · 16081 阅读 · 7 评论 -
MySQL中delete join 引发的危机
一开始是 执行查询操作,执行没问题,就改为删除操作DELETEFROM pay_recepit prJOIN fbank_account_notify fan ON fan.trade_no = pr.trade_noWHERE pr.create_time >=str_to_date('2020-01-08 11:00:00','%Y-%m-%d %H:%i:%s') AND fan.is_ent_deposit = 'Y';啪,打脸了,执行不了,报错You have an e.原创 2021-01-21 14:02:51 · 444 阅读 · 0 评论 -
Mybatis报错ClassCastException: java.lang.String cannot be cast to java.util.Date
Mybatis报错:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='createTime', mode=IN, javaType=class java.util.Date, jdbcType=null, numericSca原创 2021-01-07 23:13:28 · 11440 阅读 · 0 评论 -
MySQL中concat函数与concat_ws函数误用引发的问题
将MySQL数据库的对账数据导出成对账文件的时候发现少了20多条数据.通过检查对账文件发现经常有空白行.对账文件格式是txt格式文本,通过sql组装成的,文件内容格式如下使用的sql是这样的.select content from ( select concat( IFNULL(c.user_id,''),'|::|', IFNULL(b.detail_trade_no,''),'|::|', .原创 2020-10-16 18:44:50 · 1409 阅读 · 2 评论 -
MySQL中时间的处理与DATE_FORMAT() 和STR_TO_DATE()
前提:apply_time为datetime类型,jdbcType="TIMESTAMP"如果Java中时间参数是String类型.mybatis中可以写成<if test="param.applyTimeStart!=null and param.applyTimeStart!='' ">AND apply_time >=str_to_date(#{param.applyTimeStart},'%Y-%m-%d %H:%i:%S')</if>.原创 2020-07-23 18:10:44 · 2736 阅读 · 0 评论 -
MySQL唯一索引和普通索引对性能的影响
先说结论:对查询:普通索引和唯一索引对查询性能影响很小对更新:唯一索引比普通索引更耗时.查询流程:唯一索引找到第一个匹配数据后不继续往后查找.1.普通索引,从索引树根节点开始按层往下查找,找到对应的数据页,然后二分法查找节点,找到第一个匹配的数据后,继续往后查找,直到不满足条件.然后返回.2.唯一索引,从索引树根节点开始按层往下查找,找到对应的数据页,然后二分法查找节点,找到第一个匹配的数据后,直接返回.更新流程:唯一索引对更新需要判断是否冲突1.普通索引,找到对应的..原创 2020-07-17 16:40:02 · 3445 阅读 · 0 评论 -
MySQL查询第N大的问题
关键点:LIMIT在MySQL教程网上找到介绍TheLIMITclause is used in theSELECTstatement to constrain the number of rows to return. TheLIMITclause accepts one or two arguments. The values of both arguments must be zero or positiveintegers.大意是,LIMIT用在SELECT语句中,用来限制...原创 2020-07-17 01:42:54 · 381 阅读 · 0 评论 -
查询以及删除MySQL中重复的数据
先查询重复数据的单号, 再查询重复的数据select * FROM transaction_detailWHERE id IN ( SELECT id FROM ( SELECT id FROM transaction_detail GROUP BY trade_flow_no, account_no, service_code, direction, trade_type HAVING COUNT(*) > 1 ) dis);另一种是使用not inSEL原创 2020-07-14 09:50:46 · 106 阅读 · 0 评论 -
MySQL的MVCC与其它锁的区别
多版本并发控制(MVCC),是一种用来解决读-写冲突的无锁并发控制,也就是为事务分配单向增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照。 这样在读操作不用阻塞写操作,写操作不用阻塞读操作的同时,避免了脏读和不可重复读。不仅是MySQL,包括Oracle、PostgreSQL等其他数据库系统也都实现了MVCC,但各自的实现机制不尽相同。MVCC与乐观锁和悲观锁:悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但开销很大,在SELE原创 2020-07-14 01:42:00 · 1079 阅读 · 0 评论 -
MySQL长事务处理办法
长事务(Long-Lived Transactions),顾名思义,就是执行时间较长的事务。在innodb中可以查询到当前执行中的事务。select * from information_schema.INNODB_TRX;在访问表时,innodb会自动给加上元数据锁(meta data lock,MDL),MDL是表级锁。如果是读,就是共享锁,写就是排它锁。当执行长事务时,后续的事务如果要获取排它锁就会被阻塞。可能引发系统崩溃严重事故。解决办法:1.等系统不繁忙时操作2.检查表inf原创 2020-07-13 01:07:37 · 2282 阅读 · 0 评论 -
MySQL页分裂与页合并以及磁盘大小变化
从磁盘的物理结构来看存取的最小单位是扇区,一个扇区是512字节。微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”。一簇就是一组连续的扇区,每个簇可以包括2、4、8、16、32或64个扇区。一个文件通常存放在一个或多个簇里,但至少要单独占据一个“簇”。 也就是说两个文件不能存放在同一个簇中。NTFS文件系统格式化的时候默认是8个扇区组成一个簇,即4096字节,即4kb。而MySQL读取数据的最小单位为页,默认大小为16kb。lnnoDB逻辑存储结构MySQL所原创 2020-07-08 01:47:27 · 3042 阅读 · 0 评论 -
MySQL的文件格式file_format与行格式row_format
MySQL的文件格式在5.7之前是只有Antelope(羚羊)一种,在5.7之后新加了一种文件格式Barracuda(梭子鱼)。所以MySQL的InnoDB引擎有两种文件格式:Antelope和Barracuda。那怎么查询文件格式呢?如果查询不到说明是默认文件格式。show variables like "innodb_file_format";那怎么设置文件格式呢?设置为BARRACUDA需要开启INNODB_LARGE_PREFIX参数。SET GLOBAL INNODB_LA原创 2020-07-04 00:27:04 · 2020 阅读 · 0 评论 -
理解MySQL事务和锁的关键知识点整理
一致性视图:begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。如果你想要马上启动一个事务,可以使用 start transaction with consistent snapshot 这个命令。第一种启动方式,一致性视图是在第执行第一个快照读语句时创建的;第二种启动方式,一致性视图是在执行 start transaction with consistent snapshot 时创建的。快照读是基原创 2020-06-30 13:06:08 · 1010 阅读 · 0 评论 -
MySQL的索引相关概念,覆盖索引,最左前缀原则,索引下推
1.覆盖索引百度百科的解释是:覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖。比如id是主键,k是索引。你的sql是 select id from Twhere k = 3.此时你的k索引树上已经存了主键,先查k索引树就能得到id,可以不用再回表查询数据了。但是索引不是越多越好,当维护索引的成本低于不新建索引时就需要建索引。由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段。2.最左..原创 2020-06-27 00:32:22 · 321 阅读 · 0 评论 -
索引的三种数据结构
索引可能有三种数据结构哈希表、有序数组和N叉树。MySQL使用了B+树。1.哈希表(散列表)哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。因为是使用hash算法对key求值取余得到其在数组的存储位置。所以,哈希表这种结构适用于只有等值查询的场景,比如 Memcached 及其他一些 NoSQL 引擎。在范围查询中需要全表扫描,是很慢的。2.有序数组有序数组在范围查询中优势非常明显,可以采..原创 2020-06-25 23:21:52 · 8492 阅读 · 0 评论 -
备份MySQL表
有两种方式通过SQL备份表1.使用CREATETABLE XXXXX LIKE (推荐使用)先创建表结构create table ACT_GE_BYTEARRAY_bak0609 like ACT_GE_BYTEARRAY;然后插入sql数据insert into ACT_GE_BYTEARRAY_bak0609 select * from ACT_GE_BYTEARRAY;2.使用CREATETABLEXXXXX ASSELECT (不推荐使用)cre...原创 2020-06-09 23:36:43 · 226 阅读 · 0 评论