1. 关系型与非关系型数据库的区别:
- 关系型数据库(如MySQL):采用表格结构存储数据,结构明确,支持ACID特性,保证数据一致性与完整性。使用SQL语言进行查询,支持复杂的查询条件(如带有WHERE子句的查询)以及关联查询(JOIN操作)。
- 非关系型数据库(如Redis、MongoDB、HBase):没有固定的表结构,灵活性更强,适合大数据和高并发场景。数据以键值对、文档、列族或图形等形式存储,读写速度更快,易于扩展。
2. MySQL语句执行的步骤:
- 连接器:客户端发出请求后,连接器首先验证用户身份并分配权限。
- 查询缓存:检查是否有相同查询的缓存结果,如果有则直接返回结果,否则继续执行。
- 分析器:解析SQL语句,进行词法分析和语法分析,判断SQL语句的合法性。
- 优化器:确定最优的执行计划,包括读取表的顺序、JOIN的方式等。
- 执行器:检查用户权限,确认有权限后,调用存储引擎接口获取数据并返回结果。
3. MySQL使用索引的原因:
索引是为了提高查询速度,尤其是在处理大量数据时。MySQL通过建立索引来加速数据检索,避免全表扫描,极大提高了查询效率。索引还可以帮助优化器选择最佳的查询路径。