Java-MySql

发布于:2024-05-17 ⋅ 阅读:(144) ⋅ 点赞:(0)

数据库的三范式是什么

范式 简介
第一范式 数据库的每个字段(每一列)不可拆分,具有原子行
第二范式 满足第一范式,非主键字段必须依赖主键
第三范式 满足第二范式,非主键字段只能依赖主键

一张表里面有7条数据,删除最后两条数据,重启mysql,再插入一条数据,该数据id是多少?

数据库表类型 id值 原因
MyIASM 8 该类型会持久化最大id
InnoDB 5 该类型不会持久化最大id,只会在内存中保存

如何获取当前数据库版本

select version();

说一下ACID是什么

事务须遵循的特性 简介
Atomicity:原子性 事务中的所有操作,要么全部成功,要么全部失败,并且失败后要能够恢复原始状态,就像没发生过一样
Consistency: 一致性 事务的操作符合所有约束,不会破坏数据库一致性、完整性
isolation: 隔离性 防止多个事务同时执行导致数据异常问题
Durability: 持久性 事务处理结束后,对数据的修改是永久的

char、varchar区别

char varchar
长度是否固定
核心差别 效率高 空间利用率高
使用场景 数据长度短,处理效率要求高 数据长度长

float、double区别

float 占4个字节,最多表示8位十进制数
double 占8个字节,最多表示16位十进制数

mysql内连接、左连接、右连接区别

内连接 交集
左连接 以左表为基础,右表没有的会以null为结果
右连接 以右表为基础,左表没有的会以null为结果

mysql索引如何实现

索引定义 满足某种特定查找算法的数据结构,索引会指向特定数据,已实现高效查询
实现原理 目前主流数据库引擎都采用B+树实现,性能与二分法类似

怎么验证mysql的索引可以满足需求

使用explain语句查看sql执行select的过程,来判断是否满足需求

说一下数据库的事务隔离

事务隔离作用

事务隔离意义 解决事务并发异常
事务并发异常 1、脏写:多个事务写同一条数据,然后部分提交,部分回滚,导致提交的也无法生效,即脏写
2、脏读:事务A读取到了事务B未提交数据,事务B选择了回滚,此时事务A脏读
3、不可重复读:事务A多次读取同一条数据,此时事务B更新了该条数据,倒是事务A多次读取数据不一致,出现不可重复读问题
4、幻读:事务A多次查表,事务B同时进行了增删操作,导致事务A多次查询结果不一致,出现幻读

事务隔离四种配置

事务隔离配置值 级别 特点 解决问题
未提交读(READ-UNCOMMITTED) 最低级别 事务未提交可互相读,不允许同时写同一条数据 仅解决脏写
提交读(READ-COMMITTED) 比最低高一个级别 事务提交后才可以被其他事务读取 仅解决脏写、脏读
可重复读(REPEATABLE-TABLE) 默认级别 只要多次读取的数据一致即可 解决脏写、脏读、可重复读
序列化(SERIALIZABLE) 最高级别 完全顺序执行 由于是串行,所以不存在并发的任何问题

mysql常用引擎

引擎 简介
InnoDB 1、支持数据库ACID事务,提供行级锁、外键约束
2、内存中的缓存池会缓存数据和索引
3、不支持全文搜索,启动慢,不保存行数,select count需要扫描全表
4、提供行级锁,锁粒度小,写操作不会锁全表,适合高并发场景
MyIASM 1、MySQL默认引擎,不支持事务,不支持行级锁、外键,写操作需要锁全表,效率较低
2、保存表行数,select count不需要扫描全表
3、读操作多于写操作,并且不需要事务支持,适合MyIASM

说一下mysql的行锁和表锁

行锁 表锁
引擎支持情况 InnoDB支持行锁,MyIASM不支持行锁 两个引擎都支持
开销
加锁速度
是否会出现死锁 不会
锁定粒度
锁冲突概率
并发量

说一下乐观锁、悲观锁

锁类型 简介
乐观锁 乐观锁认为读过程中数据不会被修改,所以读不上锁,写上锁,该锁需要自己实现
悲观锁 悲观的认为读写过程中数据均有可能被修改,所以读写均上锁

mysql排查问题有哪些手段

1、show processlist查看所有连接信息
2、explain查看语句执行过程
3、开启慢查询日志,查看慢查询sql

如何做mysql的性能优化

1、为搜索字段创建索引
2、避免使用select *,列出所需查询的字段
3、垂直分割表
4、选择正确的引擎


网站公告

今日签到

点亮在社区的每一天
去签到