mysql 作为一款开源数据库,使用范围非常之广。
最核心的原因在于便宜,而且生态日趋完善。
所以本系列将对 mysql 进行重新整理学习,并且后期尝试实现简易版本的 mysql。
整体模块
myql 安装
mysql 基本使用
mysql 进阶技巧
mysql 实现原理
mysql 简易版实现
mysql 作为一款开源数据库,使用范围非常之广。
最核心的原因在于便宜,而且生态日趋完善。
所以本系列将对 mysql 进行重新整理学习,并且后期尝试实现简易版本的 mysql。
myql 安装
mysql 基本使用
mysql 进阶技巧
mysql 实现原理
mysql 简易版实现
以前有一个查询是全表扫,感觉对 database 不友好。
所以想改为 limit 进行分页查询。
代码编写时使用 mybatis-pageHelper 分页插件,直接处理分页。
结果实际性能却很差,为什么呢?
MySQL的limit基本用法很简单。limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返回记录行的偏移量,第二个是返回记录行的最大数目。
初始记录行的偏移量是0。
为了与PostgreSQL兼容,limit也支持 limit # offset #
。
连接者:不同语言的代码程序和mysql的交互(SQL交互)
1、连接池管理、缓冲用户的连接,线程处理等需要缓存的需求
2、管理服务和工具组件系统管理和控制工具,例如备份恢复、Mysql复制、集群等
3、sql 接口接受用户的SQL命令,并且返回用户需要查询的结果
InnoDB是MySQL数据库管理系统的一种存储引擎,最初由Innobase Oy AB开发,后来被Oracle Corporation收购。
它是MySQL中最流行和广泛使用的存储引擎之一,也是默认的存储引擎。
以下是关于InnoDB的详细介绍:
事务支持:InnoDB提供了对ACID(原子性、一致性、隔离性和持久性)事务的完全支持,这使得它适用于需要数据完整性和一致性的应用程序。
行级锁定:InnoDB采用行级锁定(Row-Level Locking)策略,这意味着不同的事务可以同时操作同一表的不同行,从而提高了并发性能。
外键约束:InnoDB支持外键约束,这使得在关系数据库中进行数据完整性约束的设计更加灵活和方便。
崩溃恢复:InnoDB采用了写前日志(Write-Ahead Logging)技术,这使得数据库在发生崩溃或异常情况时可以通过日志进行恢复,确保数据的持久性。
自动增加列:InnoDB支持自动增加列,这允许在插入新记录时自动生成唯一标识符。
多版本并发控制:InnoDB使用了多版本并发控制(MVCC)机制,这允许读取操作不会被写入操作阻塞,提高了并发性能。
表空间:InnoDB将数据和索引存储在表空间中,这使得管理和优化存储成为可能,可以更好地控制数据存储和管理。