目录
1. 为什么执行效率要比 COUNT(1) 或 COUNT(*) 低很多呢 ?
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将内存中的日志信息刷新到磁盘上