为什么要使用线程池
- 线程池提供了一种限制和管理资源
- 好处:
- 降低资源消耗:线程的创建和销毁需要消耗资源
- 提高响应速度:当任务达到的时候,任务可以不用等待线程创建就能立即执行
- 提高线程的可管理性:线程是稀缺资源,不可以无限创建,需要统一分配和调度、监控
把数据库横向扩展到多个物理节点的一种有效方式,主要是为了突破数据库单机服务器的 I/O 瓶颈,解决数据库扩展问题。
Sharding可简单定义为将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为一个shard,分区方式可以是任意的,并不局限于传统的水平分区和垂直分区。 一个shard可以包含多个表的内容甚至可以包含多个数据库实例中的内容。每个shard被放置在一个数据库服务器上。一个数据库服务器可以处理一个或多个shard的数据。系统中需要有服务器进行查询路由转发,负责将查询转发到包含该查询所访问数据的shard或shards节点上去执行。
日志是mysql
数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql
日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog
)和事务日志(包括redo log
和undo log
),本文接下来会详细介绍这三种日志。
错误日志文件对MySQL的启动,运行,关闭过程进行了记录。
创建数据
1 | -- 创表 |
一个数据库事务通常包含对数据库进行读或写的一个操作序列。它的存在包含有以下两个目的:
为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库在异常状态下仍能保持一致性的方法。
当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,保证彼此的操作互相干扰。
1 | (8) SELECT |
当向 MySQL 发送一个请求的时候,MySQL 到底做了什么: