数据库
文章平均质量分 92
数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质 、处理对象和管理系统的集合体。
GeorgiaStar
世上无难事,只要肯放弃
展开
-
HBase架构及原理初探
HBase是一个分布式的、列式的、实时查询的、非关系型数据库,可以处理PB级别的数据,吞吐量可以到的百万查询/每秒;其诞生的理论基础是Google大数据三驾马车之一的BigTable论文。原创 2022-05-26 13:34:06 · 1388 阅读 · 0 评论 -
MySQL联合索引的最左匹配原则及索引下推
最左前缀原则就是只要查询的是联合索引的最左N个字段,就可以利用该联合索引来加速查询。原创 2022-05-13 13:56:00 · 1823 阅读 · 2 评论 -
令人头疼的缓存与数据库一致性问题
当我们的系统引入缓存组件之后,性能得到了大幅度提升,但是随之而来的是代码需要引入一定的复杂度,比如缓存的更新策略,写入策略,过期策略等,而其中最可能导致程序员加班的莫过于缓存和数据库的一致性问题了。原创 2022-03-21 20:50:46 · 3128 阅读 · 0 评论 -
OceanBase简介及其与MySQL的比较
OceanBase是阿里巴巴和蚂蚁金服完全自主研发的通用的分布式关系型数据库,定位为商用企业级数据库。OceanBase能提供金融级别的可靠性,目前主要应用用于金融行业,同时也适用于非金融行业场景。它融合传统关系数据库和分布式系统的优势,利用普通的PC服务器组成数据库集群,拥有出色的线性扩展性。原创 2021-07-05 20:47:00 · 50815 阅读 · 6 评论 -
InnoDB存储引擎为什么选择B+树构建索引
索引是对数据库表中一个或多个列的值进行排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种。索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。索引在 MySQL 数据库中分三类:B+树索引Hash索引全文索引我们在工作开发中最常接触到的是InnoDB存储引擎中的B+树索引。要了解 B+树索引,就不得不提二叉查找树、平衡二叉树、B树这三种数据结构。B+树就是从他们演化来的。原创 2020-07-07 20:28:05 · 2684 阅读 · 0 评论 -
MySQL唯一索引与普通索引怎么选
假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的 SQL 语句:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';所以,你一定会考虑在 id_card 字段上建索引。由于身份证号字段比较大,我不建议你把身份证号当...转载 2020-02-28 19:05:25 · 674 阅读 · 1 评论 -
MySQL加锁处理分析
MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。注:MySQL是一个支持插件式存储引擎的数据库系统。本文下面的所有介绍,都是基于Inno转载 2020-05-22 15:47:08 · 1165 阅读 · 2 评论 -
理解Spring中的事务管理
Spring事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,Spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection()开启事务con.setAutoCommit(true/false);执行CRUD提交事务/回...转载 2020-03-16 21:42:41 · 3474 阅读 · 0 评论 -
count(*)为什么这么慢
在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数。这时候你可能会想,一条 select count(*) from t 语句不就解决了吗?但是,你会发现随着系统中记录数越来越多,这条语句执行得也会越来越慢。然后你可能就想了,MySQL 怎么这么笨啊,记个总数,每次要查的时候直接读出来,不就好了吗。那么今天,我们就来聊聊 count(*) 语句到底是怎样实现的,......转载 2020-02-16 21:07:18 · 3373 阅读 · 0 评论 -
一条SQL语句是如何执行的
平时我们使用数据库,看到的通常都是一个整体。我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。为了弄清楚一条SQL语句是如何执行的,必须要先了解MySQL的结构,然后解析每个模块都发生了什么。MySQL拆解给出的是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。大体来说,MySQL 可以...原创 2020-02-15 16:52:37 · 1068 阅读 · 0 评论 -
InnoDB对事务的实现
首先,我们知道事务具有ACID四个特性,即:原子性,一致性,隔离性,持久性。这四个性质我们不用干瘪的文字去阐述,我们只需要知道事务保证了一系列的操作要么全部执行,要么一个也不执行,同时一旦事务提交,则其所做的修改会永久保存到数据库即可。接下来我们一起看看InnoDB怎么实现的事务。事务的隔离性通过锁或 MVCC 机制来实现,而原子性、持久性和一致性通过 redo/undo log 来完成。re...原创 2019-09-26 20:23:02 · 1005 阅读 · 0 评论 -
如何配置数据库连接池大小
转载声明:本文转载自知乎https://zhuanlan.zhihu.com/p/80279071一、前言基本上来说,大部分项目都需要跟数据库做交互,那么,数据库连接池的大小设置成多大合适呢?一些开发老鸟可能还会告诉你:没关系,尽量设置的大些,比如设置成 200,这样数据库性能会高些,吞吐量也会大些!你也许会点头称是,真的是这样吗?可以很直接的说,关于数据库连接池大小的设置,每个开发者都...转载 2019-09-15 10:52:08 · 1052 阅读 · 0 评论 -
MySQL基础实战操作总结
【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/61614366出自【zejian的博客】 本篇将以最简单的方式呈现并演绎MySQL数据库的必知必会的知识点,通过本篇博文您将会对mysql从起点到终点的较为全面的认识,关于mysql的知识,将分两篇来记录,即M转载 2017-04-11 09:32:35 · 2087 阅读 · 0 评论 -
为什么要使用NoSQL
NoSQL概念 随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性(原子性、一致性、隔离性、持久性,一个支持事务的数据库,必需要具有这四种特性,否则在事务过程当中无法保证数据的正确性)。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受(“NoSQL”一词最早转载 2017-09-09 15:43:06 · 1644 阅读 · 0 评论 -
分布式数据库的演化过程
随着互联网时代的到来,计算机要管理的数据量成指数级别的飞速上涨。而我们完全无法对用户数做出准确的预估,我们的系统所需要支持的用户数很可能在短短的一个月内突然爆发式的增长几千倍,数据也很可能快速的从原来的几百GB飞速上涨到了几百个TB。如果在这爆发的关键时刻,系统不稳定或无法访问,那么对于业务将会是毁灭性的打击。单库单表 通常刚开始的时候,应用的数据比较少,也不会很复杂,所以应用只有一个数据库,数原创 2017-09-02 14:15:49 · 972 阅读 · 0 评论 -
Mysql在大型网站的应用架构演变
摘要: 本文主要描述在网站的不同的并发访问量级下Mysql架构的演变历程。架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构。常用的扩展手段主要有Scale-up和Scale-out两种,前者为纵向扩展,主要通过替换为更好的机器和资源来实现伸缩,提升服务能力;后者为横向扩展,通过加节点(机器)来实现伸缩,提升服务能力。对于互联网的高并发应用来说,Scale-o转载 2017-11-18 11:52:52 · 412 阅读 · 0 评论 -
Mysql的索引和锁
索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。本文力求简单讲清每个知识点,希望大家看完能有所收获。声明:如果没有说明具体的数据库和存储引擎,默认指的是MySQL中的InnoDB存储引擎。我们对索引有以下的认知:索引可以加快数据库的检索速度表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度。...转载 2019-02-02 10:42:49 · 1772 阅读 · 0 评论 -
数据库的事务隔离级别总结
学习数据库的时候常常会接触到事务, ACID等概念,那么到底什么是数据库的事务,数据库事务又具有哪些特点,和ACID有怎样的关系,事务的隔离级别又是做什么的呢?。事务及其四大特性?事务(Transaction):访问并可能更新数据库中各种数据项的一个程序执行单元(unit),它通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起。当在数据库中更改数据成功时...转载 2019-06-07 12:23:03 · 38301 阅读 · 10 评论 -
InnoDB对MVCC的实现
1、什么是MVCCMVCC,Multi-Version Concurrency Control,多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。如果有人从数据库中读数据的同时,有另外的人写入数据,有可能读数据的人会看到『半写』或者不一致的数据。有很多种方法来解决这个问题,叫做并发控制方法。最简单的方法,通过加锁,让所有的读者等待写者工作完成,但是...原创 2019-06-09 14:29:34 · 13114 阅读 · 16 评论 -
MyISAM与InnoDB两类存储引擎的索引实现
在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键(除非高并发写入操作可能需要衡量自增主键或有业务安全性要求)。有人觉得没有必要,完全可以使用如学号或身份证号这种唯一字段作为主键。不论支持哪种论点,大多数论据都是业务层面的。如果从数据库索引优化角度看,使用InnoDB引擎而不使用自增主键绝对是一个糟糕的主意。下面从各个方面来讨论一下。主键不可修改对于数...转载 2019-07-01 21:18:47 · 1378 阅读 · 0 评论 -
MySQL逻辑架构及性能优化原理
说起MySQL的查询优化,相信所有人都了解一些最简单的技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要。MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务原创 2017-04-28 13:26:35 · 10077 阅读 · 6 评论