摘要:MySQL介绍 MySQL是由MySQLAB公司(目前已经被SUN公司收归麾下)自主研发的,目前IT行业最流行的开放源代码的数据库管理系统之一,它同时也是一个支持多线程高并发多用户的关系型数据库管理系统。 MySQL数据库以其简单高效可靠的特点,在最近短短几年的时间就从一个名不见经传的数据库系统,变
        
阅读全文
 
    
        
        
摘要:Redis AOF和RDB Redis是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。 RDB持久化 将某个时间点的所有数据都存放到硬盘上 可以将快照复制到其他服务器从而创建具有相同数据的服务器副本 如果系统发生故障,将会丢失最后一次创建快照之后的数据 如果数据量很大
        
阅读全文
 
    
        
        
摘要:关系型和非关系型数据库 非关系型数据库分类 由于非关系型数据库本身天然的多样性,以及出现的时间较短,因此,不想关系型数据库,有几种数据库能够一统江山,非关系型数据库非常多,并且大部分都是开源的。 这些数据库中,其实实现大部分都比较简单,除了一些共性外,很大一部分都是针对某些特定的应用需求出现的,因此
        
阅读全文
 
    
        
        
摘要:数据库实现分布式锁 基于数据库实现分布式锁 上面已经分析了基于数据库实现分布式锁的基本原理:通过唯一索引保持排他性,加锁时插入一条记录,解锁是删除这条记录。下面我们就简要实现一下基于数据库的分布式锁。 表设计 CREATE TABLE `distributed_lock` ( `id` bigint
        
阅读全文
 
    
        
        
摘要:数据库树形结构查询 Oracle实现方式 数据库树形结构,正反遍历 --从Root往树末梢递归 select level ,identity,pid from table_name start with identity=475 connect by prior identity = pid --从
        
阅读全文
 
    
        
        
摘要:redis和数据库的缓存一致性问题 缓存的读取流程 缓存更新策略 按照数据库和缓存的更新顺序有两种更新策略:(1)先更新数据库,再更新缓存;(2)先删除缓存,再更新数据库。(3)先更新数据库,再删缓存 先更新数据库,再更新缓存 这套方案,大家是普遍反对的。为什么呢?有如下两点原因。 原因一(线程安全
        
阅读全文
 
    
        
        
摘要:redis分布式锁 单机版本 为什么要使用锁? 第一个是正确性,这个众人皆知。就像Java里的synchronize,就是用来保证多线程并发场景下,程序的正确性。JVM里需要保证并发访问的正确性,在分布式系统里面,也同样需要,只不过并发访问的单位,不再是线程,而是进程。 举个例子,一个文件系统,为了
        
阅读全文
 
    
        
        
摘要:Redis的缓存穿透、缓存雪崩、缓存击穿 缓存处理流程 缓存穿透 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。 如何避免? 对查询结果为空的
        
阅读全文
 
    
        
        
摘要:SQL语句 SQL SELECT 语句 SQL SELECT SELECT column_name,column_name FROM table_name 与 SELECT * FROM table_name SQL SELECT DISTINCT 在表中,一个列可能会包含多个重复值,有时希望仅仅列
        
阅读全文
 
    
        
        
摘要:数据库中的锁 锁分类 按锁的粒度划分:表级锁、行级锁、页级锁 按锁级别划分:共享锁、排它锁、意向锁 按加锁方式划分:自动锁、显示锁 按使用方式划分:乐观锁、悲观锁 MySQL中的行级锁、表级锁和页级锁 行级锁:行级锁分为共享锁和排他锁。行级锁是MySQL中锁定粒度最细的锁。InnoDB引擎支持行级锁
        
阅读全文
 
    
        
        
摘要:数据库索引及其优化 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进
        
阅读全文
 
    
        
        
摘要:关系数据库设计理论 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 对于 A->B,如果能找到 A 的真子集 A',使得 A'-
        
阅读全文
 
    
        
        
摘要:Redis 一、概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片
        
阅读全文
 
    
        
        
摘要:SQL中varchar和nvarchar的基本介绍及其区别 varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。 nvarchar(n) 包含 n 个字符的可变
        
阅读全文
 
    
        
        
摘要:数据库安全方面 SQL注入 风险及危害: SQL注入是一种常见攻击方式,由于开发者采用sql拼凑的方式,用来自网络中不安全的参数形成sql语句访问数据库,攻击者常常采用该漏洞组合成非法的sql语句,使得信息泄露,访问到本来没有权限查看的内容或者直接破坏数据库信息等。发生SQL Injection有以
        
阅读全文