数据库
石头dhf
三人行必有吾师!
展开
-
MySQL InnoDB Update和Crash Recovery流程
首先介绍了Redo,Undo,Log Sequence Number (LSN),Checkpoint,Rollback Pointer (ROLL_PTR),Transaction ID (TRX_ID),Transaction Serialization Number(TRX_NO) 是什么?然后介绍了MySQL Update过程中发生了什么?Redo,Undo,双写之间如何配合,脏页何时刷新...转载 2018-07-11 16:38:29 · 286 阅读 · 0 评论 -
MySQL InnoDB Update和Crash Recovery流程
首先介绍了Redo,Undo,Log Sequence Number (LSN),Checkpoint,Rollback Pointer (ROLL_PTR),Transaction ID (TRX_ID),Transaction Serialization Number(TRX_NO) 是什么?然后介绍了MySQL Update过程中发生了什么?Redo,Undo,双写之间如何配合,脏页何时刷新...转载 2018-07-11 14:26:30 · 881 阅读 · 0 评论 -
如果有人问你数据库的原理,叫他看这篇文章
本文由 伯乐在线 - Panblack 翻译,黄利民 校稿。未经许可,禁止转载!英文出处:Christophe Kalenzaga。欢迎加入翻译组。一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少【译者注...转载 2018-07-11 10:05:19 · 318 阅读 · 0 评论 -
InnoDB内存优化
1、InnoDB用一块内存区做IO缓存池,该缓存池不仅用来缓存索引块,而且也用来缓存数据块,这一点与MyISAM不同,MyISAM只缓存索引块。2、缓存池逻辑上分为free list:空闲缓存块列表。flush list :需要刷新到磁盘的缓存块列表。LRU list:InnoDB正在使用的缓存块,它是InnoDB buffer pool的核心。3、InnoDB的LRU算法大致原理:LRU lis...原创 2018-07-11 18:04:12 · 758 阅读 · 0 评论 -
oracle-索引使用面试问题解答
1,建立索引一定会减少查询时间吗?也就是提高查询效率2,一个系统,你使用了一年后,系统响应突然变慢了,请分析变慢的原因3,有一个很大的表,建立索引一般需要注意些什么,在什么字段合理?? 1.创建索引的目的是为了加速查询速度,按照b*tree索引的原理,索引树表里最后一级存储的一定是记录的唯一id,因此我们根据索引查询时,会先去索引表中查询到符合条件的记录id,然后再根据记录id在数据表根据找到的符...转载 2018-07-10 08:47:50 · 2264 阅读 · 0 评论 -
分组查询取每组前n条记录实例
假设有这样一张运动员比赛成绩表 tb_score 现在要求查询出每个国家的前三名的成绩记录,查询语句可以这样写:1、[sql] view plain copyselect t3.id,t3.country,t3.score from (select t1.*, (select count(*) from tb_score t2 where t1.score<=t2.score and t...原创 2018-06-21 14:12:51 · 1767 阅读 · 0 评论 -
select 1 from和exists
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseEXISTS指定一个子查询,检测行的存在。 语法EXISTS subquery参数subquery是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。有关更多信息,请参见select中有关子查询的讨论。结果类型Boolean结果值如果子查询包含行,则...转载 2018-06-21 12:05:00 · 3208 阅读 · 0 评论 -
MySQL索引原理及慢查询优化
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问...转载 2018-05-28 12:41:42 · 191 阅读 · 0 评论 -
MySQL InnoDB 索引原理
转载:https://www.cnblogs.com/163yun/p/8892324.html作者:范鹏程,网易考拉海购InnoDB是 MySQL最常用的存储引擎,了解InnoDB存储引擎的索引对于日常工作有很大的益处,索引的存在便是为了加速数据库行记录的检索。以下是我对最近学习的知识的一些总结,以及对碰到的以及别人提到过的问题的一些分析,如有错误,请指正,我会及时更正。目录InnoDB表结构B...转载 2018-05-27 23:48:35 · 256 阅读 · 0 评论 -
平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了
1、平衡二叉树(1)由来:平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构;(2)特点:平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则:非叶子节点只能允许最多两个子节点存在,每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的值...转载 2018-05-15 22:31:49 · 1278 阅读 · 0 评论 -
show processlist 命令详解
如果有 SUPER 权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的 MySQL 帐户运行的线程)。mysql> show processlist;+—–+————-+——————–+| Id | User | Host | db | Command | Time| State | Info+—–+————-+——————–+|207|root...转载 2018-07-28 17:13:54 · 62806 阅读 · 1 评论 -
mysql系统分析实战分享
那个,其实,我很多年没碰过技术了,但还是觉得有必要把之前一些处理过的技术问题拿出来,其实每个问题,都是很小的问题,如果单独说原因和答案都非常简单,但关键是,遇到问题的思考方式和分析方法。 依然是,高手请无视,针对一些初入技术职场的童鞋,希望能对各位遇到问题时候的思考方式有所帮助。 案例1:诡异的链接过多 当时情况是这样,突然有一天,数据库出现链接过多错误,导致网站报错。 熟...转载 2018-07-28 17:33:46 · 189 阅读 · 0 评论 -
漫谈MySql中的事务
最近一直在做订单类的项目,使用了事务。我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持。这篇文章我们一起来扒一扒事务相关的知识。为什么要有事务? 事务广泛的运用于订单系统、银行系统等多种场景。如果有以下一个场景:A用户和B用户是银行的储户。现在A要给B转账500元。那么需要做以下几件事: 1. 检查A的账户余额>...转载 2018-07-14 22:53:17 · 195 阅读 · 0 评论 -
Oracle的三种高可用集群方案
主要有三种:1. RACRAC, Real Application Clusters多个Oracle服务器组成一个共享的Cache,而这些Oracle服务器共享一个基于网络的存储。这个系统可以容忍单机/或是多机失败。不过系统内部的多个节点需要高速网络互连,基本上也就是要全部东西放在在一个机房内,或者说一个数据中心内。如果机房出故障,比如网络不通,那就坏了。所以仅仅用RAC还是...转载 2018-09-07 10:52:21 · 172 阅读 · 0 评论 -
Oracle-RAC原理
转载:https://blog.csdn.net/qq_34556414/article/details/79001267单点数据库VS RAC单节点数据库,如果实例宕机了,如果一个业务链接在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。对于RAC来说,和单实例一样,还是一份数据文件,都是相同的存储上面放着oracle的文件,...转载 2018-09-07 10:37:05 · 605 阅读 · 0 评论 -
五大常见的MySQL高可用方案
本文来自:https://zhuanlan.zhihu.com/p/25960208UCloud云计算 1. 概述我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面:如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。 用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一...转载 2018-09-10 10:27:24 · 244 阅读 · 0 评论 -
mysql中间件研究( Atlas,cobar,TDDL,mycat,heisenberg,Oceanus,vitess,OneProxy )
mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。AtlasAtlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是...转载 2018-09-10 08:36:08 · 1523 阅读 · 0 评论 -
MySQL数据库的高可用方案总结
这篇文章主要针对MySQL数据库的高可用方案进行详细总结,高可用架构对于互联网服务基本是标,本文是对各种方案的总结,感兴趣的小伙伴们可以参考一下 可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法发微博,发微信等。一般而言,衡量高可用做到什么程...转载 2018-09-09 20:37:29 · 5553 阅读 · 0 评论 -
【mysql】关于innodb中MVCC的一些理解
一、MVCC简介MVCC (Multiversion Concurrency Control),即多版本并发控制技术,它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代之的是把数据库的行锁与行的多个版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高数据库系统的并发性能读锁:也叫共享锁、S锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改...转载 2018-08-27 17:17:18 · 299 阅读 · 0 评论 -
MVCC机制
MVCC是行锁的一种变种,但是他在很多情况下避免了加锁的操作,因此开销更低。不同数据库的实现机制不同,但大都实现了非阻塞的读操作,写操作也只能锁定必要的行。 不仅是MySQL、包括Oracle、PostgresSQl等其他数据库都实现了MVCC,但各自的实现机制不尽相同,因为MVCC没有一个统一的实现标准。 MVCC的实现,是通过保存数据在某个时间点的...原创 2018-08-27 12:28:33 · 1143 阅读 · 0 评论 -
Oracle 数据库、实例、用户、表空间、表之间的关系讲解
如图:1、数据库数据库是数据集合。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。查询当前数据库名:select name from v$database;2、数据库实例用Oracle官方描述:实例是访问Oracle数据库所...转载 2018-07-22 23:04:32 · 2199 阅读 · 0 评论 -
【MySQL】如何阅读死锁日志
一 前言 工欲善其事必先利其器,前面分析了很多死锁案例,并没有详细的介绍如何通过死锁日志来诊断死锁的成因。本文将介绍如何读懂死锁日志,尽可能的获取信息来辅助我们解决死锁问题。二 日志分析2.1 场景 为了更好的学习死锁日志,我们需要提前了解死锁场景MySQL 5.6 事务隔离级别为RRCREATE TABLE `ty` ( `id` int(11) NOT NULL AUTO...转载 2018-07-29 16:23:28 · 16725 阅读 · 0 评论 -
MySQL · 答疑解惑 · MySQL 锁问题最佳实践
转载:https://blog.csdn.net/p656456564545/article/details/53966094前言最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会造成严重的影响,没有处理经验的用户往往无从下手。下面将从整个数据库设计,开发,运维阶段介绍如何避免锁问题的发生,提供一些最佳实践供RDS的用户参考。设计...转载 2018-07-29 15:50:02 · 184 阅读 · 0 评论 -
MySQL 数据库索引原理与分类
转载:https://www.jianshu.com/p/e1dce41a6b2b前言数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快目标数据检索的速度。目录1.索引的本质与原理?2.索引的分类?1.索引的本质与原理我们先看一个问题:假设现在有100000条从0到10000且从大到小排列的整型数据,1条数据的大小假设(真的只是假设)是1KB,操作系统的每次I/O数据块(页)大小是8...转载 2018-05-15 21:14:33 · 204 阅读 · 0 评论 -
深入浅出mysql笔记--20章锁问题
关系型数据库中,数据组织涉及到两个最基本的结构:表与索引。表中存储的是完整记录,一般有两种组织形式:堆表(所有的记录无序存储),或者是聚簇索引表(所有的记录,按照记录主键进行排序存储)。索引中存储的是完整记录的一个子集,用于加速记录的查询速度,索引的组织形式,一般均为B+树结构。create table t1 (a int primary key, b int, c int, d int, e v...原创 2018-05-14 21:37:47 · 321 阅读 · 0 评论 -
数据库阻塞和死锁的区别
数据库阻塞和死锁在程序开发过程经常出现,怎么样避免呢?下面通过Demo简单模拟下,数据库发生阻塞和死锁的现象:一、数据库阻塞: 数据库阻塞的现象:第一个连接占有资源没有释放,而第二个连接需要获取这个资源。如果第一个连接没有提交或者回滚,第二个连接会一直等待下去,直到第一个连接释放该资源为止。对于阻塞,数据库无法处理,所以对数据库操作要及时地提交或者回滚。Demo:--创建表create ta...转载 2018-04-24 23:20:42 · 417 阅读 · 0 评论 -
数据库常见死锁原因及处理
数据库是一个多用户使用的共享资源,当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严重影响应用的正常执行。 在数据库中有两种基本的锁类...转载 2018-04-24 23:19:15 · 441 阅读 · 0 评论 -
Oracle锁表查询和解锁方法
转载:https://blog.csdn.net/u013991521/article/details/53535818数据库操作语句的分类DDL:数据库模式定义语言,关键字:createDML:数据操纵语言,关键字:Insert、delete、updateDCL:数据库控制语言 ,关键字:grant、removeDQL:数据库查询语言,关键字:selectoracle表在什么情况下会被锁住DML...转载 2018-04-23 23:04:17 · 339 阅读 · 0 评论 -
深入浅出mysql笔记--18章SQL优化
一、定位执行慢的SQL语句1、通过查询慢日志定位执行效率低的SQL语句。2、通过show processlist 命令查看3、通过explan 分析低效语句type = all 全表,index 索引全扫描,range 索引范围扫描,ref 非唯一索引或者唯一索引的前缀扫描返回匹配某个单独值记录, eq_ref 扫描唯一索引,const/system 当作常量处理根据主键或者唯一索引key: .....原创 2018-04-30 23:07:38 · 173 阅读 · 0 评论 -
mysql中null与“空值”的坑
字段属性的"空值"与"NULL"不一样相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问:1、我字段类型是not null,为什么我可以插入空值2、为毛not null的效率比null高3、判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from tabl...转载 2018-04-30 17:12:01 · 1442 阅读 · 0 评论 -
脏读、不可重复读 共享锁、悲观锁
一、脏读、不可重复读、幻读1、脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。例如: 张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。 与此同时, 事务B正在读取张三的工资,读取到张三的工资为8000。 随后, 事务A发生异常,而转载 2017-09-24 07:46:02 · 717 阅读 · 0 评论 -
mysql事务,select for update,及数据的一致性处理
在MySQL的InnoDB中,预设的Tansaction isolation level 为REPEATABLE READ(可重读)在SELECT 的读取锁定主要分为两种方式: SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE 这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据转载 2017-09-23 23:41:55 · 509 阅读 · 0 评论 -
Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解
前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误。其实sql注入漏洞就是一个。作为一个菜鸟小程序员,我对sql注入的东西了解的也不深入,所以抽出时间专门学习了一下。现在把学习成果分享给大家,希望可以帮助大家学习。下面我们就来看一下。一、什么是sql注入呢? 所转载 2017-06-20 23:47:21 · 268 阅读 · 0 评论 -
Java 防SQL注入方法
Java 防SQL注入方法转载 2017-06-21 10:38:39 · 2467 阅读 · 0 评论 -
SQL的四种连接-左外连接、右外连接、内连接、全连接
SQL的四种连接-左外连接、右外连接、内连接、全连接 今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果。 联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可转载 2017-06-21 11:15:50 · 200 阅读 · 0 评论 -
数据库中乐观锁与悲观锁的概念
锁( locking )业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 “ 锁 ” ,即给我们选定的目标数据上锁,使其无法被其...转载 2018-04-24 23:38:04 · 108 阅读 · 0 评论 -
深入理解乐观锁与悲观锁
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernate、ta...转载 2018-04-25 08:22:23 · 98 阅读 · 0 评论 -
数据库事务的一致性和原子性浅析
本文参考自知乎Oracle事务的概念:事务用户保证数据的一致性,它是由一组dml语句组成,这组dml语句要么全部执行成功,要么全部执行失败。1、事务一致性举个例子:假如你去银行转1000元给你的朋友,所有的操作都完成之后,并且提示你转账成功(假设银行是立即转账,不存在延时的情况),你发现你的账户上减少了1000元,但是你打电话给你的朋友确认时,而你的朋友的账户却没有因此增加1000元,那么我们认为...转载 2018-04-25 08:23:18 · 679 阅读 · 0 评论 -
深入浅出MySQL笔记--第7章存储引擎
MySQL存储引擎:MyIsAM:不支持事务:表锁,批量插入高,不支持外健。以读操作和插入操作为主,只有很少的更新和删除操作。类似数据仓储。InnoDB:支持事务;行锁,支持外健;对事务完整性比较高,在并发条件下要求数据的一致性比较高。MEMORY:存储存在于内存中的内容创建的表,默认采用hash索引。 MERGE:是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,MERGE表本身没...原创 2018-04-29 09:23:24 · 111 阅读 · 0 评论 -
SQL中的where条件,在数据库中提取与应用浅析
1 问题描述一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列的步骤,简短的篇幅是绝对无能为力的。因此,本文挑选了其中的部分内容,也是我一直都想写的一个内容,做重点介绍: 给定一条SQL,如何提取其中的where条件?...转载 2018-04-28 10:16:51 · 253 阅读 · 0 评论