mysql面试题

目录

 

1. 为什么执行效率要比 COUNT(1) 或 COUNT(*) 低很多呢 ?

2. mysql权限管理验证流程?

3 如何进行用户与权限管理操作命令, 有什么启发?


1. 为什么执行效率要比 COUNT(1) 或 COUNT(*) 低很多呢 ?

 > COUNT() 是聚合函数,括号里面不仅仅可以填*和1还可以填别的比如说字段什么的。count(1)如果你给的条件是主键是有速度提升的,而count(*)即使不给主键作为条件的话,SQL也会自动优化。

2. mysql权限管理验证流程?


- 1 检查 mysql.user 表的 max_questions 和 max_updates 字段值,如果超过上限值,则拒绝执行 SQL 语句
- 2 检查 mysql.user 表,如果拥有全局性权限,直接执行;否则,继续下一步检查
- 3 检查 mysql.db 表,如果拥有数据库级别的权限,则执行;否则,继续下一步检查
- 4 检查 mysql.tables_priv,mysql.columns_priv,mysql.procs_priv 表,如果拥有相应对象的权限,则执行;否则,上报权限不足错误
>为了提高性能,MySQL 在启动时会把 5 张权限表加载到内存中,是典型的空间换时间的思想。

 

3 如何进行用户与权限管理操作命令, 有什么启发?


- 创建用户 shuch: CREATE USER 'imooc-1'@'localhost' IDENTIFIED BY 'imooc';
- GRANT 语法

-- 授予所有的权限
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'HOST';
-- 授予某个库所有表的所有权限
GRANT ALL PRIVILEGES ON DB_NAME.* TO 'USERNAME'@'HOST';
-- 授予某个库所有表的 SELECT、UPDATE 权限
GRANT SELECT, UPDATE ON DB_NAME.* TO 'USERNAME'@'HOST';
-- 授予某个库下某个表的 INSERT 权限
GRANT INSERT ON DB_NAME.TABLE_NAME TO 'USERNAME'@'HOST';
-- 授予某个库下某个表的某个列的 UPDATE 权限
GRANT UPDATE(COLUMN_NAME) ON DB_NAME.TABLE_NAME TO 'USERNAME'@'HOST';
-- 授予某个库下创建、修改、删除表结构的权限
GRANT CREATE ON DB_NAME.* TO 'USERNAME'@'HOST';
GRANT ALTER ON DB_NAME.* TO 'USERNAME'@'HOST';
GRANT DROP ON DB_NAME.* TO 'USERNAME'@'HOST';


启发一,缓存的运用。启发二,权限系统设计。(实际业务的的权限设计可以参考)

4 数据如何备份

  •  使用mysqldump 工具 使用-F binlog 模式 生成sql文件
  • binlog暂时保存在内存中,执行flush logs将内存中的日志信息刷新到磁盘上

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值