社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

【AI加油站】AI面试专题七:MySQL相关的面试题资料(附下载)

人工智能产业链union • 2 天前 • 16 次点击  
图片
核心总结

MySQL核心知识点总结

1. 索引

  • 唯一索引与普通索引:唯一索引保证数据唯一性,但更新时可能比普通索引慢,因为需要校验唯一性。

  • 索引优化:尽量使用主键查询,利用联合索引减少回表操作,将高频字段放在联合索引最左边。

  • 索引失效情况:LIKE以“%”开头、OR语句未同时使用索引、数据类型隐式转化等。

2. 存储引擎

  • MyISAM:不支持事务,采用表级锁,支持全文索引,适合读多写少的场景。

  • InnoDB:支持事务、行级锁、外键和多版本并发控制(MVCC),适合高并发场景。

  • 其他引擎:Heap(内存表)、Merge(合并表)、Federated(联邦表)等。

3. 事务

  • 事务特性(ACID):原子性、一致性、隔离性、持久性。

  • 事务隔离级别

    • 读未提交(Read Uncommitted):允许读取未提交的数据。

    • 读提交(Read Committed):只能读取已提交的数据,防止脏读。

    • 可重复读(Repeatable Read):保证同一事务中多次读取结果一致,防止不可重复读。

    • 串行化(Serializable):最高隔离级别,防止幻读。

  • 事务支持:MySQL默认为autocommit模式,InnoDB支持事务,需设置AUTOCOMMIT=0

4. 数据类型

  • 字符串类型:CHAR(固定长度)、VARCHAR(可变长度)、TEXT(大文本)、BLOB(二进制大对象)。

  • 数值类型:INT、DECIMAL(适合货币数据)、FLOAT、DOUBLE。

  • 日期时间类型

    • DATETIME:精确到秒,与时区无关。

    • TIMESTAMP:时间戳格式,与时区相关,自动更新。

    • DATE:仅存储日期。

    • TIME:仅存储时间。

5. 查询优化

  • 分页查询优化:使用SELECT * FROM T WHERE id > #{ID} LIMIT #{LIMIT}代替LIMIT OFFSET

  • 查询缓存:MySQL 8.0已删除查询缓存功能,频繁更新的表不适合使用查询缓存。

  • 优化方法:设计良好结构、主从分离、分表、缓存机制、静态页面、优化SQL。

6. 数据库设计

  • 数据库范式

    • 第一范式:属性不可再分。

    • 第二范式:每个实例可被唯一区分。

    • 第三范式:不包含其他表的非主关键字信息。

  • 主键与候选键:主键唯一标识一行,候选键可被指定为主键。

  • 外键:用于保证参照完整性,InnoDB支持外键。

7. 锁

  • 表级锁:开销小,加锁快,但并发度低。

  • 行级锁:开销大,加锁慢,但并发度高。

  • 锁优化策略:读写分离、分段加锁、减少锁持有时间。

8. 数据恢复

  • 恢复方法:通过整库备份+binlog进行恢复,需定期备份并保存binlog日志。

9. 性能分析

  • 性能分析命令SHOW STATUSSHOW SESSION STATUSSHOW PROFILES

  • 优化方法:SQL语句优化、表结构优化、系统配置优化、硬件优化。

10. 安全与权限

  • 权限表:user、db、table_priv、columns_priv、host。

  • SQL注入防范:开启magic_quotes_gpc、使用addslashes、过滤关键词、优化命名。

11. 其他知识点

  • 自增主键行为:MyISAM表重启后继续递增,InnoDB表重启后从删除的ID开始。

  • ENUM类型:用于指定预定义值集,如 ENUM('Small', 'Medium', 'Large')

  • REGEXP:模式匹配,支持正则表达式。

  • 获取MySQL版本SELECT VERSION()

  • 查看索引SHOW INDEX FROM

  • 显示前50行SELECT * FROM TABLE LIMIT 0,50

  • NOW()与CURRENT_DATE():NOW()返回日期和时间,CURRENT_DATE()仅返回日期。

这些知识点涵盖了MySQL的核心内容,适合准备面试或复习基础知识的人员参考。

本书免费下载地址


    关注微信公众号“人工智能产业链union”回复关键字“AI面试07”获取下载地址。

往期推荐:
【AI加油站】AI面试专题一:BIO,NIO,AIO,Netty面试题(附下载)
【AI加油站】AI面试专题二:Git常用命令面试题(附下载)
【AI加油站】AI面试专题三:Java常用面试题(附下载)
【AI加油站】AI面试专题四:Linux系统的面试题集(附下载)
【AI加油站】AI面试专题五:Memcached面试题集(附下载)
【AI加油站】AI面试专题六:MyBatis框架的面试题(附下载)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183491
 
16 次点击