Database Master Slave mysql 数据库集群。主从复制,主从同步,读写分离。
数据库集群架构
架构
一主多从,主从同步,读写分离。
(1)一个主库提供写服务
(2)多个从库提供读服务,可以增加从库提升读性能
(3)主从之间同步数据
在MYSQL中实现这一功能的术语叫 - Replication
优势
水平扩展,读写分离 - 在这种架构下,所有的增/删/改操作在Master上执行,所有的读操作在Slaves上执行,这样可以把并行压力分担到...
2018-09-04 00:05:56 |
Design
Mycat 分布式主从复制中间件。
MyCat
MyCAT 是一款开源软件,面向企业的“大型数据库集群”。MyCAT是一个强制数据库,它是MySQL的替代品,支持事务和ACID。
MyCAT作为企业数据库MySQL集群,可以替代昂贵的Oracle集群。
MyCAT也是一种新型的数据库,它看起来就像一个融合了内存缓存技术、NoSQL技术和HDFS大数据的SQL服务器。
MyCAT作为一种新型的现代企业数据库产品,与传统的...
2018-09-03 23:55:21 |
Middleware
MySQL Lock
锁
概念
锁在现实中的意义为: 封闭的器物,以钥匙或暗码开启。
在计算机中的锁一般用来管理对共享资源的并发访问,比如我们java同学熟悉的 Lock, synchronized 等都是我们常见的锁。
当然在我们的数据库中也有锁用来控制资源的并发访问,这也是数据库和文件系统的区别之一。
开发者要懂锁吗?
通常来说对于一般的开发人员,在使用数据库的时候一般懂点 DQL(select)...
2018-09-03 06:42:13 |
SQL
MySQL Tables 获取 mysql 所有表名称和列名称
业务背景
有时候我们需要所有的表名称,这个要如何获取呢?
解决方案
所有表名称
select table_name from information_schema.tables where table_schema='数据库表名';
根据表名获取列名与列值
select ORDINAL_POSITION as Colorder,Column_Name as ColumnName...
2018-09-03 00:57:39 |
SQL
MySQL group by mysql 分组查询取第一条(时间排序)
业务背景
mysql 分组后,取每组第一条数据
环境
MySQL:5.7
SQL
select * from (select distinct(a.id) tid, a.* from template_detail a
where a.template_id in (3, 4)
order by a.id desc) tt
...
2018-09-03 00:57:39 |
SQL
MySQL 数据库最佳实践,count(*),全文索引,事务、行锁与表锁、外键
count(*)
知识点
MyISAM 会直接存储总行数,InnoDB 则不会,需要按行扫描。
潜台词是,对于 select count(*) from t;
如果数据量大,MyISAM会瞬间返回,而InnoDB则会一行行扫描。
实践
数据量大的表,InnoDB 不要轻易 select count(*),性能消耗极大。
常见坑
只有查询全表的总行数,MyISAM才会直接返回结...
2018-09-03 00:57:39 |
SQL
JTA
JTA
概念
Java Transaction API (JTA) 指定事务管理器和分布式事务系统中涉及的各方之间的标准Java接口:资源管理器、应用服务器和事务应用程序。
JTA规范是Sun Microsystems与交易处理和数据库系统领域的领先行业合作伙伴合作开发的。
参考 JSR-907
作用
JTA提供:
划分事务边界
X/Open...
2018-09-02 09:30:53 |
API
Idempotency Patterns 幂等性的概念, RESTful 幂等操作, 幂等的实际使用
幂等性
概念
在计算机科学中,依其应用的语境不同,幂等性一词可能有不同的含义:
在命令式编程中,如果在一个或几个调用之后系统状态保持不变,则带有副作用的子程序是幂等的,换句话说,如果从系统状态空间到与子程序相关联的自身的函数在定义中给出的数学意义上是幂等的;
在函数式编程中,如果一个纯函数在定义中给出的数学意义上是幂等的,那么它就是幂等的。
在许多情况下,这是一个非常有用的属性,因...
2018-09-02 06:56:19 |
Design