MySQL Lock
锁
概念
锁在现实中的意义为: 封闭的器物,以钥匙或暗码开启。
在计算机中的锁一般用来管理对共享资源的并发访问,比如我们java同学熟悉的 Lock, synchronized 等都是我们常见的锁。
当然在我们的数据库中也有锁用来控制资源的并发访问,这也是数据库和文件系统的区别之一。
开发者要懂锁吗?
通常来说对于一般的开发人员,在使用数据库的时候一般懂点 DQL(select)...
2018-09-03 06:42:13 |
SQL
JPA
JPA
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
目的
Sun引入新的JPA ORM规范出于两个原因:
其一,简化现有Java EE和Java SE应用开发工作;
其二,Sun希望整合ORM技术,实现天下归一。
JPA 批注参考
@Entit...
2018-09-03 03:07:56 |
Protocol
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 数据库最佳实践,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
幂等性
概念
在计算机科学中,依其应用的语境不同,幂等性一词可能有不同的含义:
在命令式编程中,如果在一个或几个调用之后系统状态保持不变,则带有副作用的子程序是幂等的,换句话说,如果从系统状态空间到与子程序相关联的自身的函数在定义中给出的数学意义上是幂等的;
在函数式编程中,如果一个纯函数在定义中给出的数学意义上是幂等的,那么它就是幂等的。
在许多情况下,这是一个非常有用的属性,因...
2018-09-02 06:56:19 |
Design
Compensating Transaction pattern
补偿模式
概念
撤销一系列步骤执行的工作,如果一个或多个步骤失败,这些步骤一起定义一个最终一致的操作。
遵循最终一致性模型的操作通常出现在实现复杂业务流程和工作流的云托管应用程序中。
问题与情景
在云中运行的应用程序经常修改数据。
这些数据可能分布在不同地理位置的不同数据源上。为了避免争用和提高分布式环境中的性能,应用程序不应该试图提供强大的事务一致性。
相反,应用程序应该实现...
2018-09-02 05:27:14 |
SQL
SQL 2PC-两阶段提交
2PC
概念
在事务处理、数据库和计算机网络中,两阶段提交协议(2PC)是一种原子承诺协议(ACP)。
它是一种分布式算法,协调参与分布式原子事务的所有进程,以决定是否提交或回滚事务(这是一种专门的共识协议类型)。即使在许多临时系统故障(包括进程、网络节点、通信等故障)中,协议也达到了它的目的,因此得到了广泛的应用。
然而,并不能适应所有可能的故障配置,在极少数情况下,需要用户(例如...
2018-09-02 03:03:38 |
SQL