
MySQL
三郎君
写文章勤分享:巩固自己,帮助他人,何乐而不为!
展开
-
详细搭建 Mybatis 开发环境和入门工程(必会)
详细搭建 Mybatis 开发环境和入门工程(必会)创建 maven 工程添加 Mybatis3.4.5 的坐标编写 User 实体类编写持久层接口 IUserDao编写持久层接口的映射文件 IUserDao.xml编写 SqlMapConfig.xml 配置文件编写测试类小结创建 maven 工程创建 mybatis01 的工程,工程信息如下:Groupid:com.itheimaArtifactId:mybatis01Packing:jar添加 Mybatis3.4.5 的坐标在 pom原创 2020-12-30 20:51:02 · 221 阅读 · 2 评论 -
传统的JDBC 编程的分析(入门必会)
传统的JDBC 编程的分析步骤://加载数据库驱动//通过驱动管理类获取数据库链接//定义 sql 语句 ?表示占位符//获取预处理 statement//设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设置的参数值//向数据库发出 sql 执行查询,查询出结果集//遍历查询结果集//释放资源代码:public static void main(String[] args) {Connection connection = null;PreparedS原创 2020-12-30 20:32:30 · 343 阅读 · 0 评论 -
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题一、缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。解决办法:大多数系统设计者考虑用加锁( 最多的解决方案)或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存原创 2020-12-12 10:38:24 · 345 阅读 · 0 评论 -
mysql有哪些数据类型?
mysql有哪些数据类型1、整数类型包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分别表示1字节、2字节、3字节、4字节、8字节整数。任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非负整数。长度:整数类型可以被指定长度,例如:INT(11)表示长度为11的INT类型。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSIGNED ZEROFILL属性配合使用才有意义。例子,假定类型设定为INT(5),原创 2020-12-12 10:33:07 · 1542 阅读 · 0 评论 -
Mybatis是如何进行分页的?分页插件的原理是什么?
Mybatis是如何进行分页的?分页插件的原理是什么?Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页。可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect,添加对应的物理分页语句和物理分页参数。...原创 2020-12-08 08:47:30 · 1318 阅读 · 0 评论 -
SQL语句如何优化?
SQL如何优化?核心思想:多快好省多:查询的不漏是基本的正确准确需要快:减少不必要的查询,如全表扫描和空值查询好:不过度影响查询效果的情况下,数据可以较好地展示收集省:减少资源消耗具体实现举例1、查询语句中不要使用select*2、尽量减少子查询,使用关联查询(left join,right join,inner join)替代3、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代4、or 的查询尽量用 union或者union all 代替(在确原创 2020-11-22 11:07:20 · 182 阅读 · 0 评论 -
数据库的索引问题
数据库索引问题索引是对数据库表中一个或多个列的值进行排序的结构,建立索引有助于快速获取信息。你也可以这样理解:索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。mysql 有4种不同的索引:主键索引(PRIMARY)数据列不允许重复,不允许为NULL,一个表只能有一个主键。唯一索引(UNIQUE)数据列不允许重复,允许为NULL值,一个表允原创 2020-11-22 11:02:16 · 232 阅读 · 0 评论 -
数据库大表如何优化?
数据库大表如何优化?当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下:1. 限定数据的范围务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内;2. 读/写分离经典的数据库拆分方案,主库负责写,从库负责读;3. 垂直分区根据数据库里面数据表的相关性进行拆分。 例如,用户表中既有用户的登录信息又有用户的基本信息,可以将用户表拆分成两个单独的表,甚至放到单独的库做分库。简单来说垂直拆分是指数据表列的拆分,原创 2020-11-22 10:57:50 · 2738 阅读 · 1 评论 -
事务隔离级别有哪些?MySQL的默认隔离级别是?
事务隔离级别有哪些?MySQL的默认隔离级别是?SQL 标准定义了四个隔离级别:READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。SERI原创 2020-11-22 10:49:38 · 16056 阅读 · 8 评论 -
并发事务带来哪些问题?
并发事务带来哪些问题?隔离级别 脏读 不可重复读 幻影读在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。脏读(Dirty read): 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。丢失修改(Lost t原创 2020-11-22 10:45:01 · 526 阅读 · 0 评论 -
数据库中什么是内联接、左外联接、右外联接?
内联接(Inner Join):匹配2张表中相关联的记录。左外联接(Left Outer Join):除了匹配2张表中相关联的记录外,还会匹配左表中剩余的记录,右表中未匹配到的字段用NULL表示。右外联接(Right Outer Join):除了匹配2张表中相关联的记录外,还会匹配右表中剩余的记录,左表中未匹配到的字段用NULL表示。在判定左表和右表时,要根据表名出现在Outer Join的左右位置关系。...原创 2020-11-22 10:40:14 · 1287 阅读 · 1 评论 -
数据库中什么是视图?
什么是视图?视图是一种虚拟的表(逻辑表),具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询...原创 2020-11-22 10:38:41 · 1244 阅读 · 0 评论 -
分库分表之后,id 主键如何处理?
因为要是分成多个表之后,每个表都是从 1 开始累加,这样是不对的,我们需要一个全局唯一的 id 来支持。生成全局 id 有下面这几种方式:UUID:不适合作为主键,因为太长了,并且无序不可读,查询效率低。比较适合用于生成唯一的名字的标示比如文件的名字。数据库自增 id : 两台数据库分别设置不同步长,生成不重复ID的策略来实现高可用。这种方式生成的 id 有序,但是需要独立部署数据库实例,成本高,还会有性能瓶颈。利用 redis 生成 id : 性能比较好,灵活方便,不依赖于数据库。但是,引入了新的组原创 2020-11-22 10:36:49 · 170 阅读 · 1 评论 -
InnoDB与MyISAM的区别
InnoDB与MyISAM的区别1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应原创 2020-10-29 22:34:37 · 155 阅读 · 0 评论 -
简单说一说MySQL中drop、delete与truncate的区别?
简单说一说drop、delete与truncate的区别SQL中的drop、delete、truncate都表示删除,但是三者有一些差别delete和truncate只删除表的数据不删除表的结构速度,一般来说: drop> truncate >deletedelete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.truncate,drop是ddl, 操作立即生效,原数据不放到rollbackse原创 2020-10-29 22:25:44 · 512 阅读 · 0 评论 -
数据库的三范式是什么
1、数据库的三范式是什么第一范式:列不可再分第二范式:行可以唯一区分,主键约束第三范式:表的非主属性不能依赖与其他表的非主属性 外键约束且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上。...原创 2020-10-22 14:25:21 · 196 阅读 · 0 评论