当前位置: 首页 > news >正文

MySQL学习从零开始--第八部分

  1. 什么是视图,用于什么场景

    • 视图是一个虚拟表,本质上是一个select查询的结果集,它并不实际存储数据,依赖基础表

      CREATE VIEW view_name AS
      SELECT column1, column2 FROM table_name WHERE condition;
      
    • 使用场景

      • 简化复杂查询(多表连接/过滤封装)
      • 实现数据隔离与权限控制(只暴露部分字段)
      • 数据统计的统一口径(如日报/报表)
      • 不改变表结构实现灵活的逻辑分离
  2. 什么是存储过程,什么是函数

    • 存储过程的一组预编译的SQL语句集合,逻辑上可实现流程控制,由服务器执行

      DELIMITER //
      CREATE FUNCTION get_tax(price DECIMAL(10,2)) RETURNS DECIMAL(10,2)
      BEGINRETURN price * 0.1;
      END //
      DELIMITER ;
      
    • 函数:与过程类似,但必须有返回值,常用于计算结果的返回

  3. 生产环境中应该使用存储过程吗?还是应该在应用层中实现

    • 优先应用层:业务逻辑应在应用层实现,提高可维护性和跨数据库兼容性
    • 存储过程适用场景
      • 复杂 SQL 逻辑(如多表连接、递归查询)
      • 性能敏感的批量操作
      • 需要数据库事务强一致性保证的场景
  4. 主数据库中应该进行大量计算吗?还是应该在其他机器中进行

    • 主数据库不建议承担大量计算,尤其是复杂聚合、报表、分析任务,原因包括:

      • 影响主库响应事务请求,降低写性能
      • 占用IO、CPU,拖慢主业务

      建议

      • 主库只负责核心读写
      • 使用 从库或单独分析数据库 进行报表/计算
      • 可以引入 ETL中间层数据仓库 系统(如Hive)
  5. 如何查看Mysql数据库中有哪些mysql用户

    • -- 查看所有用户
      SELECT User, Host FROM mysql.user;-- 查看加密后的用户密码(需有权限)
      SELECT User, authentication_string FROM mysql.user;
      
  6. 如何限制用户的连接地址

    • MySQL在创建用户时可以指定ip地址或主机名

      CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';
      
    • 只限制本地访问

      CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
      
  7. 应当创建一个额外的管理员用户来代替root,并且禁用root用户吗?为什么

    应当创建

    • 创建专用管理员用户(如dbadmin
    • 限制 root 用户仅用于紧急恢复
    • 不要完全禁用 root,保留紧急访问能力

    原因

    • 遵循最小权限原则,降低账户泄露风险
    • 便于审计和追踪管理操作
    • 避免 root 密码被滥用
  8. 如何创建一个新用户,使其拥有管理员权限

    • -- 创建用户并授予所有权限
      CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword';
      GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
      FLUSH PRIVILEGES;-- 更安全的做法:授予特定管理权限
      GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, RELOAD, PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'admin'@'%';
      
    • *.*:表示所有库所有表

    • WITH GRANT OPTION:允许该用户授予权限给他人

  9. 如何查看用户的权限

    • -- 查看当前用户权限
      SHOW GRANTS;-- 查看指定用户权限
      SHOW GRANTS FOR 'user'@'host';-- 从系统表查询(需SUPER权限)
      SELECT * FROM information_schema.user_privileges WHERE GRANTEE LIKE "'user'@'host'";
      
  10. 能够创建一个只有固定权限的用户吗?比如只有某个表的权限,或者只有只读权限,又或者只有某个表中某行某列的权限

    • 可以

      #某张表权限
      GRANT SELECT, INSERT ON dbname.table1 TO 'user1'@'%';
      #只读权限
      GRANT SELECT ON dbname.* TO 'readonly_user'@'%';

      某列权限(MySQL 不支持精确到"某列"或"某行"权限,需用视图+触发器规避)

  11. Mysql如何设计自动容灾与VIP漂移机制

    • 自动容灾指主从切换 + 自动恢复,常见方案:

      • MHA(Master High Availability)
      • Orchestrator(自动切主)
      • Keepalived + VIP

      VIP漂移机制

      • VIP 绑定在主库
      • 使用 Keepalived 检测主库健康
      • 主库故障后 VIP 自动转移到新的主库
  12. 什么是脑裂,mysql如何防止脑裂,出现脑裂后如何处理

    • 脑裂定义:集群中多个节点同时认为自己是主节点,导致数据不一致
    • 防止脑裂
      • 使用 仲裁节点(如第三方监控节点)
      • 使用 Paxos、Raft 等一致性协议(如在 MySQL Group Replication 中)
      • 使用 自动切换工具(MHA、Orchestrator),限制只有一个主节点能接受写入
    • 处理方法
      • 停止所有写操作
      • 手动确认哪个主库保留
      • 使用 binlog 或 GTID 做数据补偿和恢复
  13. 什么是连接池,是需要在应用层实现吗

    • 接池:管理数据库连接的缓存池,避免频繁创建和销毁连接。主要功能包括:

      • 连接复用,提高响应速度
      • 连接数量限制,防止数据库过载
      • 空闲连接回收,资源优化

      实现位置

      • 推荐在应用层实现(如 Java 的 HikariCP、Python 的 SQLAlchemy 连接池)
      • 也可使用中间件(如 Pgbouncer for PostgreSQL)
      • 避免混用多层连接池,可能导致资源耗尽
    • 在应用层实现:降低资源开销,提高性能,

      控制最大并发连接数

http://www.lryc.cn/news/608225.html

相关文章:

  • Python中元组,字典,集合的易错题(含解析)
  • 译|Netflix 数据平台运营中基于机器学习自动修复系统
  • Docker--将非root用户添加docker用户组,解决频繁sudo执行输入密码的问题
  • Docker 部署与配置 MySQL 5.7
  • CMake 命令行参数完全指南 (1)
  • Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法
  • 2 安装 Docker 和 Jenkins:持续构建环境起步
  • 音视频学习(四十七):模数转换
  • 题单【模拟与高精度】
  • lumerical——布拉格光栅(2)
  • VS2019安装HoloLens 没有设备选项
  • 类似 Pixso 但更侧重「网页 / 软件界面设计」「前后端可视化开发」的工具
  • 【AI】AIService(基本使用与指令定制)
  • 【MODIS数据】MYD021KM
  • 解决 InputStream 只能读取一次问题
  • 位运算-371.两整数之和-力扣(LeetCode)
  • 9.3panic!最佳实践
  • 高效截图的4款工具深度解析
  • 从基础功能到自主决策, Agent 开发进阶路怎么走?
  • 自动化革命:软件开发的引擎与未来蓝图
  • 二、无摩擦刚体捉取——固定捉取
  • 第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年12月18日真题
  • C++刷题 - 7.27
  • Rust: 工具链版本更新
  • Kubernetes Service 全面详解:从概念到实践
  • 具身智能VLA困于“数据泥潭”,人类活动视频数据是否是“破局之钥”?
  • 北京-4年功能测试2年空窗-报培训班学测开-今天来聊聊我的痛苦
  • 对于考研数学的理解
  • Linux 系统管理-15-OpenSSH 服务管理
  • 【Pytorch✨】LSTM 入门