![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 80
sunByFeng
这个作者很懒,什么都没留下…
展开
-
Redis事件
Redis是事件驱动程序,服务器需要处理2类事件 1.文件事件:redis通过套接字与客户端进行连接,文件事件就是服务器对套接字操作的抽象。 2.时间事件:redis服务器中一些操作需要给的的时间点执行,而时间事件就是服务器对这类定时操作的抽象。文件事件 redis基于reactor模式开发了自己的网络事件处理器: 1)文件时间处理器采用I/O多路复用程序来进行监听多个套接字,并为套接字关联原创 2017-05-26 10:53:07 · 408 阅读 · 0 评论 -
高性能MYSQL(查询优化)
查询的生命周期:客户端到服务端,然后服务器上进行解析,生成执行计划,执行,返回结果给客户端。慢查询基础:优化数据访问 1.是否想数据库请求了不需要的数据,尽量查询需要的数据,不要返回不需要的数据。 避免:查询胥的记录;多表关联时返回全部的列;总是取出全部列;重复查询相同的数据 2. Mysql是否在扫描额外的记录 衡量查询开销的指标: 1)响应时间:服务时间和排队时间。服务时间是指数据库处原创 2017-06-19 19:52:16 · 9619 阅读 · 0 评论 -
SQL优化
Mysql索引类型1.B-Tree索引:最常见的2.HASH索引:只有Memory引擎支持3.R-Tree索引:空间索引是MyISAM的特殊索引,主要用于地理空间数据4.Full-text(全文索引):是MyISAM的特殊索引,主要用于全文索引比较hash和b-tree1. hash索引查找数据基本上能一次定位数据,当然有大量碰撞的话性能也会下降。而btree索原创 2017-05-16 12:46:59 · 1257 阅读 · 0 评论 -
高性能Mysql 3(创建高性能的索引)
索引:可以包含一个或者多个列的值。如果索引包含多个列,那么列的顺序非常重要,因为mysql只能高效地使用索引的最左前缀列。 索引类型 B-Tree索引:大多数Mysql引擎都支持这种索引。 树结构:http://blog.csdn.net/qq_23211905/article/details/72781842 B-tree能加快访问数据的速度,因为存储引擎不在需要进行全表扫描来获取需要的数原创 2017-06-17 17:21:22 · 505 阅读 · 0 评论 -
Mysql数据库存储引擎
- 什么是存储引擎 . 关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很原创 2017-05-15 22:40:42 · 528 阅读 · 0 评论 -
高性能MYSQL(mysql架构与历史)
1. MYSQL逻辑架构 第二层是mysql的核心,包括查询解析、分析、优化、缓存以及内置函数。Mysql会优化解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等。 2. 并发控制 2.1 读写锁 共享锁、排它锁,也叫读锁,写锁。 读锁是共享的,或者说是互不阻塞的。多个客户在同一时刻可以同时读取同一个资源,而 互不干扰原创 2017-06-16 21:23:35 · 533 阅读 · 0 评论 -
MYSQL+InnoDB(备份与恢复)
1.备份与恢复概述 1.热备:对正在运行的数据库进行备份。 原理:1.记录备份开始时,innoDB存储引擎重做日志文件检查点的LSN 2.复制共享表空间文件以及独立表空间文件 3.记录复制完表空间文件后,innodb存储引擎重做日志文件检查点的LSN 4.复制在备份是参数的重做日志。 2.冷备:数据库停止的情况下。 优点:1.简单,负责相关文件即原创 2017-08-21 16:20:47 · 3203 阅读 · 0 评论 -
高性能MYSQL(复制)
复制概述 复制解决的基本问题是让一个服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。 复制方法:基于行的复制;基于语句的复制。 实现:在主库上记录二进制日志,在备库重放日志的方式来实现异步数据复制。会出现数据不一致,并且无法保证主备之间的延迟。复制解决的问题: 1)数据分布:mysql通常不会对带宽造成较大的压力。基于行的复制原创 2017-06-19 21:18:33 · 366 阅读 · 0 评论 -
Redis多机数据库的实现(集群、复制、sentinel)
1.复制Redis中,用户通过执行slaveof命令或者设置slaveof选项,让一个服务器去复制另外一个服务器,被复制的服务器为主服务器,对主服务器进行复制的服务器称为从服务器。 旧版本复制功能分为:1)同步:将从服务器的数据库状态更新至主服务器当前所处的数据库状态。2)命令传播:主服务器的数据库状态被修改,导致主从数据库的状态不一致,让主从服务器的数据库从新回到原创 2017-05-26 15:15:36 · 8396 阅读 · 0 评论 -
数据库事物
1. 事物的隔离级别 - 事物的五种隔离级别 TRANSACTION_NONE 不使用事务。 TRANSACTION_READ_UNCOMMITTED 允许脏读。 TRANSACTION_READ_COMMITTED 防止脏读,最常用的隔离级别,并且是大多数数据库的默认隔离级别 TRANSACTION_REPEATA原创 2017-05-17 09:27:57 · 577 阅读 · 0 评论 -
Redis数据结构简介
Redis数据结构简介一.Redis高并发和快速的原因 1. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。 2. 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。原创 2017-05-15 20:31:53 · 508 阅读 · 0 评论 -
Redis数据库
- Redis服务器的所有数据库都保存在服务器状态redis.h/redisServer结构的db数据中。 - 切换数据库 Redis切换数据库用select语句。 目前redis没有可以返回客户端目标数据库的命令,谨慎使用。 3.数据库键空间操作 添加 set date “2016.01.02” 删除 del date 更新 set date “2原创 2017-05-15 21:31:16 · 866 阅读 · 0 评论 -
Redis缓存问题
1. 缓存穿透 定义:缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。 方法: 1. 最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,原创 2017-07-15 17:34:32 · 1097 阅读 · 0 评论 -
高性能Mysql 2(性能优化)
基准测试:针对系统设计的一种压力测试。 基准测试的原因: 1. 验证基于系统的一些假设,确认这些假设是否符合实际情况。 2. 重现系统中的某些异常行为,已解决这些异常。 3. 测试系统当前的运行情况。 4. 模拟比当前系统更高的负载,找出系统可能遇到的扩展性瓶颈。 5. 测试应用适应可变环境的能力。 6. 测试不同额硬件、软件和操作系统的配置。测试指标:吞吐量、响应时间或者延迟原创 2017-06-17 14:13:47 · 399 阅读 · 0 评论 -
Redis数据库持久化(RDB/AOF)
Redis是内存数据库,如果不保存在磁盘上,一旦服务器进程退出,服务器中的数据将会消失。 Redis提高RDB持久化功能,可以手动执行也可以根据服务器配置定期执行。RDB文件是压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态。RDB文件的创建和载入 创建RDB文件的命令:save,bgsave redis>save //等待直到文件创建完毕 改命令会造原创 2017-05-25 21:23:05 · 640 阅读 · 0 评论 -
redis安装(centos单机版)
Redis 版本:redis-3.0 安装目录:/usr/local/redis 用户:root编译和安装所需的包: yum install gcc tcl本地下载好redis-3.0.0-rc5.tar.gz,通过ssh上传到usr/local/src创建安装目录: mkdir /usr/local/redis解压: tar -zxvf 3.0.0-rc5.tar.gzmv redis-3原创 2017-05-18 17:03:04 · 288 阅读 · 0 评论 -
Redis集群安装(Redis3.0.3 + CentOS6.6_x64)
Redis 集群的安装(Redis3.0.3 + CentOS6.6_x64) 要让 Redis3.0 集群正常工作至少需要 3 个 Master 节点,要想实现高可用,每个 Master 节点要配备 至少 1 个 Slave 节点。根据以上特点和要求,进行如下的集群实施规划: 使用 6 台服务器(物理机或虚拟机)部署 3 个 Master + 3 个 Slave 主机名 ip原创 2017-05-26 16:25:31 · 604 阅读 · 0 评论 -
高性能MYSQL(高级特性)
分区表是一个独立的逻辑表,底层由多个物理表组成。实现代码实际是一组底层表的句柄对象。分区的一个主要目的是将数据按照一个较粗的粒度分在不同的表中,这样可以将相关的数据存放在一起。 作用:1.表非常大以至于无法全部存放于内存中,或者最后的是热点数据其他是历史数据 2.分区表的数据更容易维护。 3.分区表的数据可以分布在不同的物理设备上,从而高效地利用多个硬件设备。 4.使用分区表避免某些特殊的瓶原创 2017-09-01 14:22:48 · 1326 阅读 · 0 评论