数据库查询优化-explain

2025-4-15 diaba Mysql

在 MySQL 中,EXPLAIN 是一个非常有用的命令,用于分析 SQL 查询的执行计划。通过 EXPLAIN,可以了解 MySQL 是如何执行查询的,包括表的访问顺序、使用的索引、连接类型等信息。这对于优化查询性能非常有帮助。 基本用法 EXPLAIN [SQL查询语句]; 例如: EXPLAIN SELECT * FROM users WHERE age > 25; 输出字段解释 EXPLAIN 的输出结果通常包含以下字段: id ...

阅读全文>>

标签: 数据库优化 查询

评论(0) 浏览(30)

蚂蚁三地五中心数据存储

2025-4-1 diaba Mysql

蚂蚁集团分布式系统“三地五中心”部署的数据存储与同步策略 1. 数据存储架构 蚂蚁集团的“三地五中心”架构是其分布式系统的重要组成部分,旨在实现高可用性、容灾能力和弹性扩展。具体的数据存储和部署策略如下: 数据库选择:蚂蚁集团使用自研的分布式关系数据库OceanBase。OceanBase具备数据强一致、高可用、高性能、在线扩展等特点。 副本部署:每个数据分片的数据库部署5个副本,这些副本分布在三地五中心的不同数据中心。其中,3个副本实现强一致性,确保数据的高可用性和可靠性。 逻辑分区:数据按照业务逻辑进行分区,每...

阅读全文>>

标签: OceanBase 三地五中心 分布式存储

评论(0) 浏览(46)

Redis多种部署架构

2025-3-13 diaba Redis

Redis 支持多种部署架构,每种架构都有其特点和适用场景,主要解决不同的核心问题。以下是常见的 Redis 部署架构及其特点和核心问题的总结: 1. 单机模式(Standalone Mode) 特点:最简单的部署方式,仅包含一个 Redis 节点。 优点: 架构简单,部署方便。 性能较高,适合小规模应用。 缺点: 单点故障,一旦节点宕机,数据将不可访问。 内存容量和处理能力受限于单...

阅读全文>>

标签: redis 分布式

评论(0) 浏览(140)

IO多路复用在Redis发挥重要作用

2025-3-4 diaba Redis

Redis 是一个内存数据库,其核心操作主要是对内存中的数据进行读写,而不是像传统数据库那样频繁访问磁盘文件。然而,Redis 仍然需要处理大量的网络 I/O 操作,因为它是通过网络与客户端进行通信的。这就是 I/O 多路复用在 Redis 中发挥重要作用的原因。 1. Redis 的网络通信需求 Redis 是一个高性能的网络服务,其主要功能是通过网络接收客户端请求并返回响应。具体来说: 客户端通过网络连接(通常是 TCP 套接字)向 Redis 发送命令。 Redis 接收这些命令,处理它们,并将结果通过网络发...

阅读全文>>

评论(0) 浏览(179)

Redis 的 ZSET(Sorted Set,有序集合)

2025-3-4 diaba Redis

Redis 的 ZSET(Sorted Set,有序集合) 是一种非常强大的数据结构,它结合了集合(Set)和哈希表(Hash)的特点,能够存储带有分数(score)的成员(member),并且根据分数对成员进行排序。ZSET 的高效性和灵活性使其在许多场景中被广泛应用,例如实现排行榜、优先队列等。 ZSET 的底层实现结构 Redis 的 ZSET 底层使用了两种数据结构来实现: 双跳表(Skip List) 哈希表(Hash Table) 这两种结构共同工作,使得 ZS...

阅读全文>>

标签: redis 分布式

评论(0) 浏览(166)

Redis数据结构介绍

2025-3-3 diaba Redis

Redis 是一种高性能的键值存储数据库,支持多种数据结构。每种数据结构都有其独特的特点和适用场景。以下是 Redis 中常见的数据结构及其应用场景: 1. 字符串(String) 字符串是 Redis 最基本的数据类型,可以存储字符串、数字或二进制数据。 特点 最简单的数据结构,类似于键值对。 支持多种操作,如设置值、获取值、追加值、自增/自减操作等。 可以存储任意类型的数据(字符串、数字、二进制数据)。 应用场景 缓存数据:存储用户会话信息、页面缓存等。 ...

阅读全文>>

标签: redis

评论(0) 浏览(153)

MVCC原理介绍

2025-2-21 diaba Mysql

MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于提高数据库并发性能的机制,通过维护数据的多个版本,允许读写操作并行执行,从而减少锁竞争。以下是MVCC的详细原理介绍: 1. MVCC的核心思想 MVCC的核心思想是为每行数据维护多个版本,每个版本对应一个特定的事务版本号。通过版本号,数据库可以判断某个事务在执行时应该看到哪个版本的数据,从而实现读操作不加锁,避免读写冲突。 2. 版本链 在MVCC机制下,数据库中的每行数据都维护一个版本链,记录了该行数据的多个版本...

阅读全文>>

标签: 数据库 MVCC

评论(0) 浏览(134)

MySQL查询结果保存到文件

2016-6-2 diaba Mysql

执行sql语句,保存到文件的方法: $mysql -u root -D databasesName -p -e "select * from t_user " >> users.txt 作用:在命令行执行查询数据库databasesName,查询语句是select * from t_user,把结果保存到当前目录的users.txt文件中。

阅读全文>>

标签: mysql

评论(0) 浏览(3568)

阿里分布式存储系统OceanBase简介

2016-5-23 diaba 数据库

淘宝在“双十一”得到了空前的反响,当然在“双十一”背后,OceanBase分布式系统负载均衡也帮了不少的忙,以下就是其经验分享。 云计算已经是现在大势所趋,它所具备的低成本、高性能、高可用性、高可扩展性等特点与互联网应用日益面临的挑战不谋而合,成为近年来互联网领域的热门话题。当然在云计算的底层架构中,分布式存储是不可或缺的重要组成部分。就像国外知名的互联网公司Google、Amazon、Facebook、Microsoft、Yahoo等都竞相推出了各自的分布式存储系统,而在国内淘宝也自主研发的一个支持海量数据的高性能分布式数据库系统OceanBase,实现了数千亿条记录、数百TB数据上的...

阅读全文>>

标签: OceanBase

评论(0) 浏览(3833)

Redis—原子增操作INCR的应用

2016-4-25 diaba Redis

INCR INCR key 将 key 中储存的数字值增一。 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 这是一个针对字符串的操作,因为 Redis 没有专用的整数类型,所以 key 内储存的字符串被解释为十进制 64 位有符号整数来执行 INCR 操作。 ...

阅读全文>>

标签: redis 原子增操作

评论(0) 浏览(3442)

乐观锁和悲观锁

2016-1-27 diaba 数据库

锁( locking ) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机 制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓 的 “ 锁 ” ,即给我们选定的目标数据上锁,使其无法被其他程序修改。 Hibernate 支持两种锁机制:即通常所说的 “ 悲观锁( Pessimistic Locking ) ” 和 “ 乐观锁( Op...

阅读全文>>

标签: 乐观锁 悲观锁

评论(0) 浏览(2946)

Mysql存储引擎MyISAM和InnoDB对比

2016-1-25 diaba Mysql

mysql的MyISAM和InnoDB两个存储引擎的索引实现方式: MyISAM引擎使用B+ Tree作为索引结构,叶节点存放的是数据记录的地址。 MyISAM引擎的辅助索引(二级索引)和主索引在结构上没有区别,只是辅助索引的key可以重复,叶节点上存放的也是数据记录的地址。 MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。 InnoDB中表数据本身就是按B+ Tree组织的一个索引结构,叶节点存放的就不是数据记录的地址,而是完整的数据记录。所以InnoDB这种存储方式,又称为聚集索引,使得按主键的...

阅读全文>>

标签: myiasm innodb

评论(1) 浏览(3523)

三种基本存储引擎

2016-1-25 diaba Mysql

哈希存储引擎     是哈希表的持久化实现,支持增删改及随机读取操作,但是不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)要快,如果不需要有序的遍历数据,那么哈希表就是your Mr.Right。 B树存储引擎     是B树的持久化实现。不仅支持单条记录的增删查改操作,还支持顺序扫描(B+树的叶子节点之间的指针),对应的存储系统就是关数据库。 LSM树(Log-Structured Merge Tree)...

阅读全文>>

标签: 存储引擎

评论(0) 浏览(3993)

Redis—常见参数配置

2016-1-6 diaba Redis

Redis的以下常见参数设置都是通过对redis.conf文件进行修改来完成的。  本文主要介绍了设置访问密码、主从配置、设置数据和日志目录、以及参数调优等方面。    一. 权限设置:   1. 修改redis.conf文件: Shell代码 requirepass passstring   2. 客户端登录,需要先进行授权操作,提供密码即可。 Shell代码 auth passstring  ...

阅读全文>>

标签: 配置 调优

评论(1) 浏览(4175)

Redis设计与实现——RDB和AOF持久化区别

2016-1-6 diaba Redis

原文:http://blog.csdn.net/jackpk/article/details/30073097 aof,rdb是两种 redis持久化的机制。用于crash后,redis的恢复。 rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。 save, shutdown, slave 命令会触发这个操作。 粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复。 aof有如下特性: Code...

阅读全文>>

标签: RDB AOF

评论(0) 浏览(3088)

Redis设计与实现——常用命令

2016-1-6 diaba Redis

    Redis提供了丰富的命令,允许我们连接客户端对其进行直接操作.这里简单介绍一下作为常用的一些命令,包括对字符串、列表、集合、有序集合、哈希表的操作,以及一些其他常用命令。 【 基本操作】 1. 添加记录:通常用于设置字符串(string)类型,或者整数类型;如果key已经存在,则覆盖其对应的值。 Shell代码   set name James   ...

阅读全文>>

标签: redis 命令

评论(0) 浏览(1990)

MySQL 数据库引擎

2016-1-4 diaba Mysql

    MySQL有以下几种引擎:ISAM、MyISAM、HEAP、InnoDB和Berkley(BDB)。     注意:不同的版本支持的引擎是有差异的。当然,也能使用MySQL++来创建自己的数据库引擎,具体操作可以参照MySQL++ API帮助来实现。     下面逐一叙述这5种引擎各自的特性:     ISAM     ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被...

阅读全文>>

标签: mysql 数据库引擎

评论(0) 浏览(2949)

Mysql-ifnull,if语句

2015-12-17 diaba Mysql

取某行数据多个数值字段最大的一个值 select if(field1>field2,field1,field2) as bigger, if(if(field1>field2,field1,field2)>if(field3>field4,field3,field4),if(field1>field2,field1,field2),if(field3>field4,field3,field4)) as biggest from dual;

阅读全文>>

标签: mysql if ifnull

评论(0) 浏览(3160)

MySQL Query Cache 小结

2015-12-6 diaba Mysql

作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接:http://isky000.com/database/mysql-query-cache-summary 最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache 的内容,以供参考。 顾名思义,MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说,Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲,就是将 SE...

阅读全文>>

标签: cache mysql query

评论(0) 浏览(3052)

Mysql-如果为null返回0

2015-12-4 diaba Mysql

1、如果为空返回0 select ifnull(null,0) 2、如果为空返回0,否则返回1 select if(isnull(col),0,1) as col.

阅读全文>>

标签: 数据库 mysql 如果为null

评论(0) 浏览(3776)

Powered by emlog 京ICP备15045175号-1 Copyright © 2022