官方文档:Apache ShardingSphere
前置内容:MySQL:(五)分库分表
第章 高性能架构模式互联网业务兴起之后,海量用户加上海量数据的特点,单个数据库服务器已经难以满足业务需要,必须考虑数据库集群的方式来提升性能。高性能数据库集群的第一种方式是“读写分离”,第二种方式是“数据库分片”。
、读写分离架构读写分离原理:读写分离的基本原理是将数据库读写操作分散到不同的节点上,下面是其基本架构图:
读写分离的基本实现:
主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。
读写分离是根据 SQL 语义的分析,将读操作和写操作分别路由至主库与从库。
通过一主多从的配置方式,可以将查询请求均匀的分散到多个数据副本,能够进一步的提升系统的处理能力。
使用多主多从的方式,不但能够提升系统的吞吐量,还能够提升系统的可用性,可以达到在任何一个数据库宕机,甚至磁盘物理损坏的情况下仍然不影响系统的正常运行。
下图展示了根据业务需要,将用户表的写操作和读操路由到不同的数据库的方案:
CAP 理论:
...
前言对于sql优化,必须掌握的知识:MySQL:(一)索引底层原理与实现 、MySQL:(二)存储引擎
一、插入数据批量插入&手动事务如果插入的数据是-这个范围,可以使用数据批量插入的方式。那如果是几万条数据呢?那就使用多条数据批量插入语句。如果使用单条插入操作会多次建立与数据库的连接,性能肯定是比一次性连接的批量插入低的。
另外,InnoDB使用的是自动提交事务,每插入一次就自动进行事务的开启和关闭,因此可以手动控制事务,避免事务多次的开启和提交。
最后是主键顺序的问题。InnoDB使用的是B+树和双向链表,而B+树众所周知就是查的快,插入难,会导致页分裂等等问题。B+树如果按照主键顺序进行插入效率会高很多。
主键顺序可参考:
文章:MySQL:(一)索引底层原理与实现 中第四节:InnoDB B+树存储数据结构。
本篇文章第二节
总结一下:
批量插入
手动提交事务
主键按顺序进行插入
load指令ok,下一模块。
如果插入的数据更大,数据来到了几百万的级别,那么使用insert的性能就不高了。
在MySQL中要涉及大量数据插入时,我们选择 ...