MySQL常见问题

1、什么是事务,它的特性是什么?

事务是指作为单个逻辑工作单元的一系列操作(一系列SQL语句)。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据(脏读、非重复读、幻像读、丢失修改的异常情况),破坏数据库的一致性。

“A向B支付50”

  1. 读出A支付宝余额(100)。

  2. A支付宝扣钱操作(100-50)。

  3. 结果写回A账号(50)。

  4. 读出B支付宝余额(100)。

  5. B支付宝做加法操作(100+50)。

  6. 结果写回B支付宝(150)。

事务的四个特性:

原子性:事务必须是原子工作单位。对于数据的修改,要么全部执行,要么全部不执行。以上六个步骤,要么都执行,要么都不执行;

一致性:事务在完成时,所有的数据必须保持一致状态。比如:A转支付前(100)+B收款前(100)=A支付完成后(50)+B收款后(150);

隔离性:并发事务对数据的修改于其他并发事务对数据的修改是隔离的。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。比如:在A向B转账的整个过程中,只要事务还没有提交(commit),查询A账户和B账户的时候,两个账户里面的钱的数量都不会有变化。

持久性:事务完成后,对系统的影响是永久的。一旦转账成功,变化就真实存在了。

2、什么是死锁。产生死锁的原因,避免死锁的方法。

MySQL有三种锁的级别:页级、表级、行级。

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

死锁就是两个或多个事务在同一个资源上相互占用,并且请求锁死对方的资源。

避免死锁的方法:一个事物经量一次锁定所用资源;表级锁;并发存取多个表时,以相同顺序访问。

3、索引

索引就是对表格一列或者多列进行排序的一种结构

索引类型:

主键索引(PRIMARY KEY,每张数据表只能存一个主键);

唯一索引(UNIQUE KEY,可以保证记录的唯一性);

普通索引(INDEX);

全文索引(FULLTEXT)。

最左前缀(最左优先):where 子句使用最频繁的一列放在最左边

常见索引算法:BTree(用在>、<、>=等比较操作符),Hash(用在=对等比较符)。且Hash索引检索比BTree索引检索效率高。

索引设计:适用于索引的列出现在where子句中的列;用短索引;不要过度使用索引。

优点:可以实现快速查询;

缺点:降低更新表的速度;建立索引会占用磁盘空间的索引文件。

4、脏读,不可重复读,幻读

脏读:A事务读取了B事务更新的数据,但是B回滚了,那么A就是脏读。

不可重复读:A事务重复读取同一数据多次,在A事务读取的过程中,B事务对该数据进行更新并提交,导致A事务读取的数据不一致。

幻读:A事务对表格进行整体优化(评等级),B事务在A事务优化过程中插入一行新的记录,导致A事务完成后发现还有记录没有优化完成,就好像发生幻觉一样。

5、sql生命周期

  1. 客户端服务器和数据库服务器创建连接
  2. 数据库进程拿到请求sql
  3. 解析并生成执行计划并执行
  4. 读书数据放入内存中并进行逻辑处理
  5. 发送结果给客户端服务器
  6. 关闭连接,释放资源

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值