# 介绍


## 什么是数据库代理
数据库代理，是在高可用云数据库UDB MySQL基础之上的网络代理服务，其位于数据库服务端与应用服务端之间。
数据库代理将主从架构的数据库统一纳管，并向应用服务端提供一个统一的网络入口，其具有高可用、高性能、易扩展等特性。
数据库代理为服务端提供了读写分离、SQL限流、SQL统计、自动排障等核心功能，使应用服务端更加专注于业务。

## 为什么要用读写分离
数据显示，关系型数据库在OLTP业务下96.87%都在等待读I/O，而处理器计算仅仅占了5.3%，这说明要提高数据库的QPS性能，关键的一点是提高系统的IO能力。

另一个数据表明， 大多数业务对数据库的访问，是读大于写。 典型的如电商、O2O、互联网金融等业务，读写比例可以达到 5:1 甚至 10:1 。

提高IO能力的方法， 除了升级硬件， 提升单个节点的磁盘I/O能力之外， 还有一个重要的方法是读写分离。 可以部署一主多从的主从复制集群，
进而将读请求分发给多个数据库节点并行处理。考虑到大部分业务对数据库的访问以读居多， 读写分离能够给数据库性能带来明显的增益。

首先，多个节点并行读取，能够提供几倍于单个节点的磁盘数据读取能力；

其次，由于将读请求分摊到多个节点， 单个节点的I/O也得以减轻， I/O等待时间得以减小。

最终，整个系统的I/O能力得到有效提升。

对于OLAP业务而言， 由于需要涉及大量的内存存储和计算， CPU和内存可能成为瓶颈，读写分离也具有一定的意义。
通过将数据分析请求分流到多个节点，可以让不同的数据分析操作，在多个节点并行地执行，
节点之间互不干扰， 充分发挥并行处理的优势。
