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语句中的一个字符

相关推荐
云和数据.ChenGuang34 分钟前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
LCG元2 小时前
【面试问题】JIT 是什么?和 JVM 什么关系?
面试·职场和发展
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天4 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构