目录
MySQL查询缓存有什么弊端,应该什么情况下使用,8.0版本对查询缓存由上面变更
[Like声明中% 和_是声明意思?](#Like声明中% 和_是声明意思?)
大家一起加油 !!!
唯一索引比普通索引快吗
唯一索引不一定比普通索引快,还可能慢
MySQL由哪些部分组成,分别用来做什么
1.Server
连接器:管理连接,权限验证。
分析器:词法分析,语法分析
优化器:执行计划生成,索引的选择
执行器:操作存储引擎,返回执行结果
- 存储引擎:存储数据,提供读写接口
MySQL查询缓存有什么弊端,应该什么情况下使用,8.0版本对查询缓存由上面变更
-
查询缓存可能会失效非常频繁,对于一个表,只要有更新,该表的全部查询缓存都会被清空,隐藏对于频繁更新的表来说,查询缓存不一定能起到正面效果。
-
对于读多于写的表可以考虑使用查询缓存。
-
8.0版本的查询缓存功能被删了。
MyISAM和InnoDB的区别有哪些
InnoDB支持事务,MyISAM不支持
InnoDB支持行级锁,MyISAM支持表锁
InnoDB支持多版本并发工作(MVVC),MyISAM不支持
InnoDB支持外键,MyISAM不支持
MyISAM支持全文索引,InnoDB部分不支持
事务,外键,锁,并发,索引
MySQL怎么恢复半个月前的数据
通过整库备份+binlog进行恢复,前提是要有定期整库备份且保存了binlog日志。
MySQL事务的隔离级别,分别有什么特点
-
读未提交(RU):一个事务还没提交时,它作的变更就被别的事物看到。
-
读提交(RC):一个事物提交之后,它做的变更才会被其他事物看到。
-
可重复读(RR):一个事物执行过程中看到的数据,总是跟这个事物在启动时看到的数据时一致的。当然在可重复读隔离即被下,未提交变更对其他事物也时不可见的。
-
串行化(S):对于同一记录,读写都会加锁。当出现读写锁冲突的时候,后访问的事物必须等前一个事物执行完成才能继续执行。
做过哪些MySQL索引相关优化
-
尽量使用主键查询:聚簇索引上存储了全部数据,相比普通索引查询,减少了回表的消耗
-
适当使用联合索引,减少表判断的消耗
-
若是频繁查询某一列数据,可以考虑利用覆盖索引避免回表。
-
联合索引将高频字段放在最左边
一千万条数据的表,如何分页查询
数据链过大的情况下,limit offset分页会越扫描越慢,可以配合当前页最后一条id进行查询,select * from t where id > #{id} limit #{limit}当然,这种情况下id必须时有序的,这也是有序id的好处之一
订单表数据量越来越大导致查询缓慢,如何处理
分库分表,一般高频的都是近期订单,将订单按照月份或年份,进行分库分表,订单ID最好包含时间(如雪花算法生成),此时技能更具订单ID直接获取到订单记录,也能按照时间进行查询。
MySQL中有哪几种锁
-
表锁:开销小,加锁快,不会出现死锁;锁的力度大,发生冲突概率高,并发低。
-
行锁:开销大,加锁慢;会出现死锁;所得粒度小,发生冲突概率低,并发度高
-
页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁的颗粒度介于表锁和行锁之间,并发度一般
分页如何显示前50行?
sql
select * from table limit (0,50)
select * from table limit 50 offset 0;
数据库中的事物是什么?
事物(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事物成功,即使只有一个操作失败,事物也不成功。如果所有操作完成,事物则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事物将回滚,该事务所有操作的影响都将取消。
事务特性:
-
原子性:要么全部成功,要么全部失败
-
一致性:一致性是指数据库在事务执行前后都处于一致的状态。更具体地说,一致性要求事务的执行不会违反数据库的完整性约束,如主键唯一性、外键引用完整性、检查约束等。
-
隔离性:不允许该事务数据提交给其他事务
-
持久性:永久保存,宕机不会导致数据丢失
SQL注入漏洞产生的原因?如何防止?
-
过滤关键字:update,insert,delete,select,*
-
提高数据库和字段命名,防止被猜到
与Oracle相比,Mysql有什么优势
-
Mysql是开源软件,随时可用,无需付费
-
Mysql是便携式的
-
带有命令提示符GUI
-
使用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语句中的一个字符