沙滩de流沙
不积跬步,无以至千里!
既然选择了远方,就要风雨兼程!
展开
-
MySql中的时间类型:datetime和timestamp
MySql中的时间类型分为两种:datetime和timestamp区别(1):时间范围datetime能表示的时间范围更广datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59timestamp 4 bytes YYYY-MM-DD HH:MM:S...原创 2018-12-07 19:18:50 · 911 阅读 · 0 评论 -
如何自动生成表关联关系关系图 或 实体关系模型图------EER图
最近项目组让整理一个我们项目的表结构设计说明书,就是梳理每张表的字段、描述、是否为空、字段类型等,理论上完成上面的就可以交差了,但我觉得要是能将所有的表之间的关联关系图(EER)画出来就更好了,逼格一下就上去了。画EER当然有各种工具,最不济实在闲得慌手动画也行.....这里是我刚刚实践过得方式,就是用mysql的workbench来完成,简单高效,下面是步骤:(1)打开workbench...原创 2019-01-18 13:52:43 · 18879 阅读 · 3 评论 -
数据库表设计-------三个范式
在数据库设计中,为了更好地实现数据库操作的高效性和便捷性,有三个范式的规则可以遵循,三个范式分别是: 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解; 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字...原创 2019-09-16 10:28:13 · 579 阅读 · 1 评论 -
Spring Cloud 核心组件协作及原理
Spring Cloud不能只停留在使用的层面,其底层的很多原理也需要去知晓。业务举例:一、Eureka如上图所示,库存服务、仓储服务、积分服务中都有一个Eureka Client组件,这个组件专门负责将这个服务的信息注册到Eureka Server中。说白了,就是告诉Eureka Server,自己在哪台机器上,监听着哪个端口。而Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。比如订单服务里的Eureka Client组件,它会找Eureka S原创 2021-09-14 21:39:31 · 400 阅读 · 0 评论 -
分库分表方案
不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表 。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库 。2、CPU瓶颈第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引原创 2021-08-08 21:10:30 · 283 阅读 · 0 评论 -
SQL优化
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t原创 2021-08-05 23:03:49 · 126 阅读 · 0 评论 -
代码逆向生成 —— mybatis-generator-maven-plugin
根据表结构自动生成mapper、xml、实体类。使用mybatis-generator-maven-plugin。步骤:(1)引入插件原创 2021-06-04 22:31:16 · 982 阅读 · 2 评论 -
有了这篇,面试官问MySQL,再也不虚了!(三)
一、误删数据后除了跑路,还能怎么办?原创 2021-04-06 22:18:28 · 164 阅读 · 0 评论 -
有了这篇,面试官问MySQL,再也不虚了!(二)
写在前面:最近学习了大佬的MySQL课程,很有深度,解开了我很多疑点,值得去研究学习,这里整理记录下。当然这里面需要一些前置知识储备,详见:二叉树、红黑树、B树、B+树 合集MySQL相关知识点一、随机查询现象:英语学习 App 首页有一个随机显示单词的功能,也就是根据每个用户的级别有一个单词表,然后这个用户每次访问首页的时候,都会随机滚动显示三个单词。发现随着单词表变大,选单词这个逻辑变得越来越慢,甚至影响到了首页的打开速度。mysql> CREATE TABLE.原创 2021-03-31 08:53:57 · 159 阅读 · 0 评论 -
有了这篇,面试官问MySQL,再也不虚了!(一)
一、一条SQL查询语句是如何执行的?select * from student where ID=1;上面是一条最简单的查询SQL语句,我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。看似简单的背后有着复杂的过程,实际对应着Mysql的逻辑架构:MySQL 的逻辑架构图总体上,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所..原创 2021-03-31 08:52:32 · 195 阅读 · 0 评论 -
数据库表结构文档生成导出神器——Screw(螺丝钉)插件springboot集成实例
本文所有实例代码下载地址:https://github.com/ImOk520/myspringcloud一、说明Screw(螺丝钉)是一款简洁好用的数据库表结构文档生成工具,它的特点是:简洁、轻量、设计良好、多数据库支持、多种格式文档、灵活扩展以及支持自定义模板,对于有经常要进行数据库设计、评审、文档整理等需求的人来说就是福音~。Screw支持的数据库有:MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB...原创 2020-12-01 09:31:07 · 2057 阅读 · 2 评论 -
java与数据库中的锁 及 MVCC
一、Java中的锁公平锁/非公平锁 可重入锁/不可重入 独享锁/共享锁 读写锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁1.1 公平锁,非公平锁:公平锁就是保障了多线程下各线程获取锁的顺序,先到的线程优先获取锁,当一个线程获取到锁后,这时如果其他多个线程同时请求获取锁,会将其他线程按到达顺序排成队列,当持有锁的线程释放锁后,队列中的线程会依次按照队列顺序获取锁。非公平锁则无法提供这个保障。与公平锁的区别时,当一个线程持有锁时,其他线程请求时会加入队列中,当一个持有锁的线程释放.原创 2020-08-04 22:23:38 · 433 阅读 · 0 评论 -
Mybatis框架专辑
一、Mybatis能做啥?(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。(2)MyBatis 可以使用XML 或注解来配置和映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。(3)通过xml 文件或注解的方式将要执行的各种 st...原创 2020-07-30 23:14:44 · 331 阅读 · 0 评论 -
MySQL相关知识点——详细
一、索引1.1 为什么要使用索引?这个可以类比查新华字典,假如字典前面没有“按偏旁部首”、“按拼音”等查询,你要是去查一个字就只能一个一个去字典里面翻了,效率很低。但是按照“偏旁部首”去查就快多了,不用盲目地去一个个翻找。“按偏旁部首”、“按拼音”其实就是字典为自己建立的索引。同理,数据库为什么也要建立索引?假如不建立索引,你要查一条记录就只能一条一条去查找,效率低下。有了索引,你就可以不断的缩小查找范围来筛选出最终想要的结果,大大提高MySQL的检索速度。实际上,索引也是一张表,该表保.原创 2020-06-15 22:20:20 · 693 阅读 · 0 评论 -
EA(Enterprise Architect)逆向生成Mysql数据库对应表结构关系图
一、安装ODBC数据源驱动ODBC数据源驱动有32位和64位两种,可以自行网上搜索下载安装,安装成功后可在 控制面板--》系统和安全 --》管理工具 查看到如下:二、安装MySQL的ODBC驱动安装好上面的ODBC数据源驱动后选择自己对应的32位或64的选项(这里的32和64,跟操作系统位数没有关系,即操作系统是64位不一定这里ODBC也是64),我的是32位的,双击打开:点击添加,弹出驱动类型选择列表:若是第一次添加,列表里面应该是没有MySQL的驱动的,这时需要..原创 2020-06-03 11:49:24 · 2684 阅读 · 2 评论 -
#{} 和 ${} 的区别--详细
#{}和${}这两个语法是为了动态传递参数而存在的,是Mybatis实现动态SQL的基础,总体上他们的作用是一致的(为了动态传参),但是在编译过程、是否自动加单引号、安全性、使用场景等方面有很多不同,下面详细比较两者间的区别:一、区别汇总1.编译过程#{} 是 占位符 :动态解析 ->预编译-> 执行 ${} 是 拼接符 :动态解析 -> 编译-&......原创 2020-03-26 18:18:12 · 34747 阅读 · 8 评论 -
关于数据库字段判空
text字段,要用!=''来判断非空,不能用IS NOT NULL判断非空 其他字段用IS NOT NULL,和IS NULL判断为空(非空)原创 2019-11-14 14:59:52 · 704 阅读 · 1 评论 -
count(*) 和 count(列名)的区别
count(*)是SQL92定义的标准统计行数的语法,跟数据库无关,跟NULL和非NULL无关。count(*)会统计值为NULL的行,而count(列名)不会统计此列为NULL值的行。id name 1 张三 2 李四 3 NULL 这里count(*)就是 3, count(`name`)就是 2。最好不要使用count(列名)或cou...原创 2019-09-16 14:56:51 · 1540 阅读 · 1 评论