Mysql (面试篇)

目录

唯一索引比普通索引快吗

MySQL由哪些部分组成,分别用来做什么

MySQL查询缓存有什么弊端,应该什么情况下使用,8.0版本对查询缓存由上面变更

MyISAM和InnoDB的区别有哪些

MySQL怎么恢复半个月前的数据

MySQL事务的隔离级别,分别有什么特点

做过哪些MySQL索引相关优化

一千万条数据的表,如何分页查询

订单表数据量越来越大导致查询缓慢,如何处理

MySQL中有哪几种锁

分页如何显示前50行?

数据库中的事物是什么?

SQL注入漏洞产生的原因?如何防止?

与Oracle相比,Mysql有什么优势

符合区分float和double?

在Mysql中ENUM的用法式什么?

如何定义REGEXP?

Char和varChar的区别?

列的字符串里类型可以是什么?

[Like声明中% 和_是声明意思?](#Like声明中% 和_是声明意思?)


大家一起加油 !!!

唯一索引比普通索引快吗

唯一索引不一定比普通索引快,还可能慢

MySQL由哪些部分组成,分别用来做什么

1.Server

连接器:管理连接,权限验证。

分析器:词法分析,语法分析

优化器:执行计划生成,索引的选择

执行器:操作存储引擎,返回执行结果

  1. 存储引擎:存储数据,提供读写接口

MySQL查询缓存有什么弊端,应该什么情况下使用,8.0版本对查询缓存由上面变更

  1. 查询缓存可能会失效非常频繁,对于一个表,只要有更新,该表的全部查询缓存都会被清空,隐藏对于频繁更新的表来说,查询缓存不一定能起到正面效果。

  2. 对于读多于写的表可以考虑使用查询缓存。

  3. 8.0版本的查询缓存功能被删了。

MyISAM和InnoDB的区别有哪些

InnoDB支持事务,MyISAM不支持

InnoDB支持行级锁,MyISAM支持表锁

InnoDB支持多版本并发工作(MVVC),MyISAM不支持

InnoDB支持外键,MyISAM不支持

MyISAM支持全文索引,InnoDB部分不支持

事务,外键,锁,并发,索引

MySQL怎么恢复半个月前的数据

通过整库备份+binlog进行恢复,前提是要有定期整库备份且保存了binlog日志。

MySQL事务的隔离级别,分别有什么特点

  1. 读未提交(RU):一个事务还没提交时,它作的变更就被别的事物看到。

  2. 读提交(RC):一个事物提交之后,它做的变更才会被其他事物看到。

  3. 可重复读(RR):一个事物执行过程中看到的数据,总是跟这个事物在启动时看到的数据时一致的。当然在可重复读隔离即被下,未提交变更对其他事物也时不可见的。

  4. 串行化(S):对于同一记录,读写都会加锁。当出现读写锁冲突的时候,后访问的事物必须等前一个事物执行完成才能继续执行。

做过哪些MySQL索引相关优化

  1. 尽量使用主键查询:聚簇索引上存储了全部数据,相比普通索引查询,减少了回表的消耗

  2. 适当使用联合索引,减少表判断的消耗

  3. 若是频繁查询某一列数据,可以考虑利用覆盖索引避免回表。

  4. 联合索引将高频字段放在最左边

一千万条数据的表,如何分页查询

数据链过大的情况下,limit offset分页会越扫描越慢,可以配合当前页最后一条id进行查询,select * from t where id > #{id} limit #{limit}当然,这种情况下id必须时有序的,这也是有序id的好处之一

订单表数据量越来越大导致查询缓慢,如何处理

分库分表,一般高频的都是近期订单,将订单按照月份或年份,进行分库分表,订单ID最好包含时间(如雪花算法生成),此时技能更具订单ID直接获取到订单记录,也能按照时间进行查询。

MySQL中有哪几种锁

  1. 表锁:开销小,加锁快,不会出现死锁;锁的力度大,发生冲突概率高,并发低。

  2. 行锁:开销大,加锁慢;会出现死锁;所得粒度小,发生冲突概率低,并发度高

  3. 页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁的颗粒度介于表锁和行锁之间,并发度一般

分页如何显示前50行?

sql 复制代码
select * from table limit (0,50)
select * from table limit 50 offset 0;

数据库中的事物是什么?

事物(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事物成功,即使只有一个操作失败,事物也不成功。如果所有操作完成,事物则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事物将回滚,该事务所有操作的影响都将取消。

事务特性:

  1. 原子性:要么全部成功,要么全部失败

  2. 一致性:一致性是指数据库在事务执行前后都处于一致的状态。更具体地说,一致性要求事务的执行不会违反数据库的完整性约束,如主键唯一性、外键引用完整性、检查约束等。

  3. 隔离性:不允许该事务数据提交给其他事务

  4. 持久性:永久保存,宕机不会导致数据丢失

SQL注入漏洞产生的原因?如何防止?

  1. 过滤关键字:update,insert,delete,select,*

  2. 提高数据库和字段命名,防止被猜到

与Oracle相比,Mysql有什么优势

  1. Mysql是开源软件,随时可用,无需付费

  2. Mysql是便携式的

  3. 带有命令提示符GUI

  4. 使用Mysql查询浏览器支持管理

符合区分float和double?

浮点数:8位精度存储,并且有4个字节

double:18位精度存储,有8个字节

在Mysql中ENUM的用法式什么?

ENUM是一个字符串对象,用于指定一组预定的值,并可在创建表时使用。

Create table size (name ENUM( 'Smai','Medium','Large' ));

如何定义REGEXP?

REGEXP是模式匹配,其中匹配模式在搜索值得任何位置。

Char和varChar的区别?

Char和varChar类型在存储和检索房间有所不同

Char列长度固定为创建表声明的长度,长度值范围是1到255,当char值被存储时,我们被用空格填充到特定长度,检索char值时需要删除尾随空格。

列的字符串里类型可以是什么?

字符串类型是:

set

blob

enum

char

test

varchar

Like声明中% 和_是声明意思?

%对应于0个活更多字符,_只是Like语句中的一个字符

相关推荐
工业甲酰苯胺1 小时前
Redis性能优化的18招
数据库·redis·性能优化
没书读了2 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
i道i2 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl2 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
wqq_9922502773 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空3 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
Oak Zhang4 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
聂 可 以4 小时前
Windows环境安装MongoDB
数据库·mongodb
web前端神器4 小时前
mongodb多表查询,五个表查询
数据库·mongodb
门牙咬脆骨4 小时前
【Redis】redis缓存击穿,缓存雪崩,缓存穿透
数据库·redis·缓存