Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
JavaGuide
提交
98117518
J
JavaGuide
项目概览
wushizhenking
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
98117518
编写于
8月 09, 2021
作者:
G
Guide哥
提交者:
GitHub
8月 09, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1310 from yamonc/master
完善MySQL内容,添加spring中事务的思维导图等
上级
ab0874f0
013b8a0a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
36 addition
and
5 deletion
+36
-5
docs/database/MySQL.md
docs/database/MySQL.md
+24
-2
docs/system-design/framework/mybatis/mybatis-interview.md
docs/system-design/framework/mybatis/mybatis-interview.md
+1
-1
docs/system-design/framework/spring/Spring常见问题总结.md
docs/system-design/framework/spring/Spring常见问题总结.md
+11
-2
未找到文件。
docs/database/MySQL.md
浏览文件 @
98117518
...
...
@@ -22,10 +22,32 @@ MySQL、PostgreSQL、Oracle、SQL Server、SQLite(微信本地的聊天记录
由于 MySQL 是开源免费并且比较成熟的数据库,因此,MySQL 被大量使用在各种系统中。任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。MySQL 的默认端口号是
**3306**
。
### 关系型数据库的设计范式?
**范式**
是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”,可以粗略的理解为
**一张数据表的表结构所符合的某种设计标准的级别**
。
-
**第一范式**
(1NF):符合1NF的关系中的每个属性不可再分。另外第一范式是所有关系型数据库的最基本要求。
第一范式的存在的问题:数据冗余过大、插入异常、删除异常、修改异常等问题。
-
**第二范式(2NF)**
:在符合1NF的基础上,消除了非主属性对于码的部分函数依赖。
第二范式存在的问题: 有可能会出现非主属性对码的传递依赖。
-
**第三范式(3NF):**
在符合2NF的基础上,消除了非主属性对码的传递函数依赖。也就是说,如果存在非主属性对于码的传递函数依赖,则不符合第三范式的要求。
第三范式存在的问题:存在着
**主属性**
对于码的部分函数依赖与传递函数依赖。
-
**BC范式(BCNF)**
: 在符合3NF 的基础上消除了主属性对码的部分函数依赖和传递函数依赖。
摘自这篇文章
[
《如何理解关系型数据库的常见设计范式?》
](
https://www.zhihu.com/question/24696366/answer/29189700
)
## 存储引擎
### 存储引擎相关的命令
**查看MySQL提供的所有存储引擎**
=======
**查看 MySQL 提供的所有存储引擎**
```
sql
...
...
@@ -152,9 +174,9 @@ set global query_cache_type=1;
set
global
query_cache_size
=
600000;
```
如上,
**开启查询缓存后在同样的查询条件以及数据情况下,会直接在缓存中返回结果**
。这里的查询条件包括查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息。
因此任何两个查询在任何字符上的不同都会导致缓存不命中。此外,
如果查询中包含任何用户自定义函数、存储函数、用户变量、临时表、MySQL 库中的系统表,其查询结果也不会被缓存。
如上,
**开启查询缓存后在同样的查询条件以及数据情况下,会直接在缓存中返回结果**
。这里的查询条件包括查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息。
(
**查询缓存不命中的情况:(1)**
)因此任何两个查询在任何字符上的不同都会导致缓存不命中。此外,(
**查询缓存不命中的情况:(2)**
)
如果查询中包含任何用户自定义函数、存储函数、用户变量、临时表、MySQL 库中的系统表,其查询结果也不会被缓存。
缓存建立之后
,MySQL 的查询缓存系统会跟踪查询中涉及的每张表,如果这些表(数据或结构)发生变化,那么和这张表相关的所有缓存数据都将失效。
(
**查询缓存不命中的情况:(3)**
)
**缓存建立之后**
,MySQL 的查询缓存系统会跟踪查询中涉及的每张表,如果这些表(数据或结构)发生变化,那么和这张表相关的所有缓存数据都将失效。
**缓存虽然能够提升数据库的查询性能,但是缓存同时也带来了额外的开销,每次查询后都要做一次缓存操作,失效后还要销毁。**
因此,开启查询缓存要谨慎,尤其对于写密集的应用来说更是如此。如果开启,要注意合理控制缓存空间大小,一般来说其大小设置为几十 MB 比较合适。此外,
**还可以通过 sql_cache 和 sql_no_cache 来控制某个查询语句是否需要缓存:**
...
...
docs/system-design/framework/mybatis/mybatis-interview.md
浏览文件 @
98117518
...
...
@@ -147,7 +147,7 @@ public V get(Object key) {
注:我出的。
答:
MyBatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页,可以在 sql 内直接书写带有物理分页的参数来完成物理分页功能,
也可以使用分页插件来完成物理分页。
答:
**(1)**
MyBatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页;
**(2)**
可以在 sql 内直接书写带有物理分页的参数来完成物理分页功能,
**(3)**
也可以使用分页插件来完成物理分页。
分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 sql,然后重写 sql,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。
...
...
docs/system-design/framework/spring/Spring常见问题总结.md
浏览文件 @
98117518
...
...
@@ -93,9 +93,10 @@ AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无
### 4.2 Spring AOP 和 AspectJ AOP 有什么区别?
**Spring AOP 属于运行时增强,而 AspectJ 是编译时增强。**
Spring AOP 基于代理(Proxying),而 AspectJ 基于字节码操作(Bytecode Manipulation)。
1.
**Spring AOP 属于运行时增强,而 AspectJ 是编译时增强。**
2.
**Spring AOP**
基于
**代理(Proxying)**
,而
**AspectJ**
基于
**字节码操作(Bytecode Manipulation)**
。
Spring AOP
已经集成了 AspectJ ,AspectJ 应该算的上是 Java 生态系统中最完整的 AOP 框架了。AspectJ 相比于 Spring AOP 功能更加强大,但是 Spring AOP 相对来说更简单,
3.
**Spring AOP**
已经集成了 AspectJ ,AspectJ 应该算的上是 Java 生态系统中最完整的 AOP 框架了。AspectJ 相比于 Spring AOP 功能更加强大,但是 Spring AOP 相对来说更简单,
如果我们的切面比较少,那么两者性能差异不大。但是,当切面太多的话,最好选择 AspectJ ,它比Spring AOP 快很多。
...
...
@@ -258,6 +259,10 @@ MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架。Spring M
1.
基于XML的声明式事务
2.
基于注解的声明式事务
**思维导图**
:
![
image-20210807101442105
](
https://gitee.com/yamonc/blogImage/raw/master//img/blogImage/image-20210807101442105.png
)
### 8.2 Spring 事务中的隔离级别有哪几种?
**TransactionDefinition 接口中定义了五个表示隔离级别的常量:**
...
...
@@ -286,6 +291,10 @@ MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架。Spring M
-
**TransactionDefinition.PROPAGATION_NESTED:**
如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。
**思维导图:**
![
image-20210807102320870
](
https://gitee.com/yamonc/blogImage/raw/master//img/blogImage/image-20210807102320870.png
)
### 8.4 @Transactional(rollbackFor = Exception.class)注解了解吗?
我们知道:Exception分为运行时异常RuntimeException和非运行时异常。事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录