数据库
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件
转载自 Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件Mycat是什么Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件!一个彻底开源的,面向企业应用开发的大数据库集群支持事务、ACID、可以替代MySQL的加强版数据库一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群一个融合内存缓存技术、NoSQL技术、HDFS大...转载 2018-04-26 09:28:14 · 1756 阅读 · 0 评论 -
数据库 - 事务管理(ACID)隔离级别 事务传播行为
转载自 数据库 - 事务管理(ACID)隔离级别 事务传播行为总览:事务的4大特性(ACID)原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性(Consistency) 一致性是指事务必须使数据...转载 2018-08-20 19:02:47 · 190 阅读 · 0 评论 -
独占锁、共享锁、更新锁,乐观锁、悲观锁
转载自 独占锁、共享锁、更新锁,乐观锁、悲观锁1、锁的两种分类方式(1)从数据库系统的角度来看,锁分为以下三种类型: 独占锁(Exclusive Lock) 独占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不会被接受。执行数据更新命令,即INSERT、 UPDATE 或DELETE 命令时,SQL Server 会自动使用独占锁。但当对象上有其它锁存在...转载 2018-08-20 19:11:55 · 1040 阅读 · 0 评论 -
数据库的这些性能优化,你做了吗
转载自 数据库的这些性能优化,你做了吗在互联网项目中,当业务规模越来越大,数据也越来越多,随之而来的就是数据库压力会越来越大。我们可能会采取各种方式去优化,比如之前文章提到的缓存方案,SQL优化等等,除了这些方式以外,这里再分享几个针对数据库优化的常规手段:「数据读写分离」与「数据库Sharding」。这两点基本上是大中型互联网项目中应用的非常普遍的方案了。下面我们来详细看一看,...转载 2018-09-27 19:09:55 · 137 阅读 · 0 评论 -
分表分库时机选择及策略
转载自 分表分库时机选择及策略一. 分表应用场景:对于大型的互联网应用来说,数据库单表的记录行数可能达到千万级甚至是亿级,并且数据库面临着极高的并发访问。采用Master-Slave复制模式的MySQL架构,只能够对数据库的读进行扩展,而对数据库的写入操作还是集中在Master上,并且单个Master挂载的Slave也不可能无限制多,Slave的数量受到Master能力和负载的限制...转载 2018-09-23 11:18:21 · 1881 阅读 · 0 评论 -
ACID中C与CAP定理中C的区别
转载自 ACID中C与CAP定理中C的区别ACID和CAP定理中都有C,代表Consistent一致性,很多人容易将这两个C混为一谈,其实这两个一致性是有区别的。事务的定义是一系列操作要么全部成功,要么全部不成功,数据库的事务机制是通过ACID实现的,数据库ACID的具体定义见这里,ACID中的一致性的定义是:一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状...转载 2018-09-29 19:56:23 · 1923 阅读 · 0 评论 -
设计数据库表时,你真的会选数据类型吗
转载自 设计数据库表时,你真的会选数据类型吗关系型数据库,是开发人员最常接触的持久化存储之一了,使用关系型数据库有很多好处,比如支持通过事务处理保持数据的一致性、数据更新的开销很小、可以进行Join等复杂查询等。同时,还有个好处就是关系型数据库有比较完善的数据类型,支持很多不同类型的数据存储。但是这些数据类型的使用和选择也有很多套路在的,本文就来简单介绍一下。1. 整数类型整数类...转载 2018-11-18 11:03:51 · 365 阅读 · 0 评论 -
数据库的最简单实现
转载自 数据库的最简单实现所有应用软件之中,数据库可能是最复杂的。MySQL的手册有3000多页,PostgreSQL的手册有2000多页,Oracle的手册更是比它们相加还要厚。但是,自己写一个最简单的数据库,做起来并不难。Reddit上面有一个帖子,只用了几百个字,就把原理讲清楚了。下面是我根据这个帖子整理的内容。 数据以文本形式保存第一步,就是将所要保存的数据,写入文本...转载 2018-11-24 21:32:26 · 174 阅读 · 0 评论 -
海量数据的分库分表技术演进,最佳实践
转载自 海量数据的分库分表技术演进,最佳实践每个优秀的程序员和架构师都应该掌握分库分表,移动互联网时代,海量的用户每天产生海量的数量用户表 订单表 交易流水表以支付宝用户为例,8亿;微信用户更是10亿。订单表更夸张,比如美团外卖,每天都是几千万的订单。淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。事实上MySQL单表可以存储10亿级数据,只是这...转载 2019-01-02 23:17:24 · 219 阅读 · 0 评论 -
Java面试之数据库面试题
转载自Java面试之数据库面试题1、触发器的作用?触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。2、什么是存储过程?用什么来调用?存储过程是一个预编译的SQL语句,优点是允许...转载 2019-05-03 11:37:35 · 2105 阅读 · 0 评论 -
百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题
转载自 百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器。而且,它非常适合虚拟环境,比如:Docker。另外,它通过消费未来时间克服了雪花算法的并发限制。UidGenerator提前生成ID并缓存在RingBuffer中。 压测结果显示,单个实例的QPS能超过6000,...转载 2019-05-13 23:12:19 · 1542 阅读 · 0 评论 -
最通俗易懂的乐观锁与悲观锁原理及实现
转载自 最通俗易懂的乐观锁与悲观锁原理及实现一、乐观锁 总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。 version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线...转载 2018-08-20 19:12:13 · 323 阅读 · 0 评论 -
聚簇索引和聚簇索引介绍
转载自 聚簇索引和聚簇索引介绍一. 什么是索引和建立索引的好处 什么是索引 在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别,与书中的索引一样,数据库中的索引使您可以快速找到表中的特定信息。索引包含从表中一个或多个列生成的键,以及映射到指定数据的存储位置的指针,也就是说索引由键和 指针组成。它是用于提高数据库表数据访问速度的数据库对象。 建立索引的好处:...转载 2018-08-19 09:52:14 · 4236 阅读 · 0 评论 -
Druid-目前最好的连接池
转载自 Druid-目前最好的连接池Druid是什么Druid是阿里开源的连接池,是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能,是为监控而生的数据库连接池!GitHub:https://github.com/alibaba/druid/添加依赖<dependency> <groupId>com.alibaba</groupId&g...转载 2018-05-04 10:25:42 · 818 阅读 · 0 评论 -
千万条数据,Stack Overflow是如何实现快速分页的
转载自 千万条数据,Stack Overflow是如何实现快速分页的Stack Overflow 在分页机制中使用页码代替偏移量,页码指向基于 LIMIT 和 OFFSET 的查询。假设要对 1000 万条记录进行分页,跳到最后一页会非常慢,但 Stack Overflow 还是想办法实现了快速分页。那么 Stack Overflow 是如何实现快速分页的呢?缓存热门查询并在应用程序代码中实现分页...转载 2018-05-06 14:36:22 · 338 阅读 · 0 评论 -
主流Java数据库连接池比较及前瞻
转载自 主流Java数据库连接池比较及前瞻主流数据库连接池常用的主流开源数据库连接池有C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Druid等C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。单线程,性能较差,适用于小型系统,代码600KB左右。DBCP (Dat...转载 2018-05-07 10:12:42 · 215 阅读 · 0 评论 -
深入理解乐观锁与悲观锁
转载自 [初级]深入理解乐观锁与悲观锁在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像me...转载 2018-05-22 10:37:56 · 121 阅读 · 0 评论 -
数据库锁机制
转载自 数据库锁机制一、为什么需要了解锁1.1 死锁问题1.2 并发问题导致的不正确数据的读取和存储,破坏数据一致性的丢失更新:当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题--最后的更新覆盖了由其他事务所做的更新。例如,两个编辑人员制作了同一文档的电子副本。每个编辑人员独立地更改其副本,然后保存更改后的副本,这样就覆盖了原始文...转载 2018-05-22 10:38:08 · 218 阅读 · 0 评论 -
深入分析事务的隔离级别
转载自 [中级]深入分析事务的隔离级别 本文详细介绍四种事务隔离级别,并通过举例的方式说明不同的级别能解决什么样的读现象。并且介绍了在关系型数据库中不同的隔离级别的实现原理。在DBMS中,事务保证了一个操作序列可以全部都执行或者全部都不执行(原子性),从一个状态转变到另外一个状态(一致性)。由于事务满足久性。所以一旦事务被提交之后,数据就能够被持久化下来,又因为事务是满足隔离性的,...转载 2018-07-25 00:02:29 · 146 阅读 · 0 评论 -
彻底理解数据库事务
转载自 彻底理解数据库事务 事务事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在计算机术语中,事务通常就是指数据库事务。概念一个数据库事务通常包含对数据库进行读或写的一个操作序列。它的存在包含有以下两个目的:1、为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了...转载 2018-07-25 00:02:38 · 213 阅读 · 0 评论 -
解读分库分表中间件Sharding-JDBC
转载自 解读分库分表中间件Sharding-JDBC编者按】数据库分库分表从互联网时代开启至今,一直是热门话题。在NoSQL横行的今天,关系型数据库凭借其稳定、查询灵活、兼容等特性,仍被大多数公司作为首选数据库。因此,合理采用分库分表技术应对海量数据和高并发对数据库的冲击,是各大互联网公司不可避免的问题。虽然很多公司都致力于开发自己的分库分表中间件,但截止目前,仍无完美的开源解决方案覆盖此领域。...转载 2018-06-20 13:14:09 · 391 阅读 · 0 评论 -
微服务化的数据库设计与读写分离
转载自 微服务化的数据库设计与读写分离数据库永远是应用最关键的一环,同时越到高并发阶段,数据库往往成为瓶颈,如果数据库表和索引不在一开始就进行良好的设计,则后期数据库横向扩展,分库分表都会遇到困难。 对于互联网公司来讲,一般都会使用Mysql数据库。一、数据库的总体架构我们首先来看Mysql数据的总体架构如下: 这是一张非常经典的Mysql的系统架构图,通过这个...转载 2018-07-23 20:34:44 · 144 阅读 · 0 评论 -
聚集索引、辅助索引、覆盖索引、联合索引
转载自 聚集索引、辅助索引、覆盖索引、联合索引聚集索引(Clustered Index)聚集索引就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据。举个例子,直观感受下聚集索引。创建表t,并以人为的方式让每个页只能存放两个行记录(不清楚怎么人为控制每页只存放两个行记录): 最后《MySQL技术内幕》的作者通过分析工具得到这棵聚集索引树的大...转载 2018-08-20 19:12:23 · 602 阅读 · 0 评论 -
扎心一问:分库分表就能无限扩容吗?
转载自扎心一问:分库分表就能无限扩容吗?像我这样的菜鸟,总会有各种疑问,刚开始是对 JDK API 的疑问,对 NIO 的疑问,对 JVM 的疑问,当工作几年后,对服务的可用性,可扩展性也有了新的疑问,什么疑问呢?其实是老生常谈的话题:服务的扩容问题。# 正常情况下的服务演化之路让我们从最初开始。1.单体应用每个创业公司基本都是从类似 SSM 和 SSH 这种架构...转载 2019-09-01 10:47:18 · 247 阅读 · 0 评论