2019.3网上面试题备试(一) SQL篇

如果有很多数据插入MYSQL 你会选择什么方式? 

存储过程

MYSQL存储过程

如果查询很慢,你会想到的第一个方式是什么?索引是干嘛的?

MYSQL索引使用案例分析

关于SQL查询效率,100w数据,查询只要1秒

索引,增加查询速率

如果建了一个单列索引,查询的时候查出2列,会用到这个单列索引吗?

如果建了一个包含多个列的索引,查询的时候只用了第一列,能不能用上这个索引?查三列呢?

能,能

接上题,如果where条件后面带有一个 i + 5 < 100 会使用到这个索引吗?

不会

应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

怎么看是否用到了了某个索引?

explain

mysql explain用法和结果的含义

like %aaa%会使用索引吗? like aaa%呢?

不会,不会使用,(但不会使索引失效)

drop、truncate、delete的区别?

1.速率drop > truncate > delete

drop是DDL,会隐式提交,所以,不能回滚,不会触发触发器。

drop语句删除表结构及所有数据,并将表所占用的空间全部释放

truncate是DDL,会隐式提交,所以,不能回滚,不会触发触发器

truncate会删除表中所有记录

delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。

平时你们是怎么监控数据库的? 慢SQL是怎么排查的?

触发器;线上慢查询的排查

你们数据库是否支持emoji表情,如果不支持,如何操作?

不支持,编码utf8mb4

你们的数据库单表数据量是多少?一般多大的时候开始出现查询性能急剧下降?

某些表数据达到500W+以后查询统计性能严重下降

查询死掉了,想要找出执行的查询进程用什么命令?找出来之后一般你会干嘛?

SELECT * FROM information_schema.PROCESSLIST where COMMAND = 'Query';

检查是否有死进程

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

kill 进程号

重新执行

读写分离是怎么做的?你认为中间件会怎么来操作?这样操作跟事务有什么关系?

让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作

MySQLProxy实际上是在客户端请求与MySQLServer之间建立了一个连接池。所有客户端请求都是发向MySQLProxy,然后经由MySQLProxy进行相应的分析,判断出是读操作还是写操作,分发至对应的MySQLServer上

【mysql 读写分离】10分钟了解读写分离的作用

分库分表有没有做过?线上的迁移过程是怎么样的?如何确定数据是正确的?

记录一次经历的数据库从单库到分库分表的过程

 

附:

为什么SQL第一次查慢,第二次查快?

是一个内存常驻的问题,
但是实际上是表缺少索引,你在where,order by列添加索引 就不会有这种情况了。
产生的原因可能:你的表行数很多,由于没有添加索引,需要进行全表扫描,第一次需要从物理磁盘中将全表加载到内存中,很慢。第二次因为全表在内存中 所以查找很快。
如果添加了索引的话,就不需要全表扫描,即使第一次也不需要加载全表数据

索引优点

1.大大加快数据的检索速度;

2.创建唯一性索引,保证数据库表中每一行数据的唯一性;

3.加速表和表之间的连接;

4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

索引缺点

1.索引需要占物理空间。

2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值