首页 / 数据库

Redis实现分布式锁之正确的加锁解锁方式

Redis分布式锁核心指令加锁和过期时间:加锁和设置锁的过期时间必须是一个完整的原子性操作既然是锁,我们肯定需要一个解锁的过程,如果我们没有设置锁的过期时间,一旦一个客户端出现故障没来得及解锁的话,锁会一直存在,导致死锁。要是存在过期时间的话,redis会自动删除锁Redis加锁并设置过期时间指令:...

2019-07-27
标签: redis    122

MySQL 索引及查询优化总结(转)

        MySQL索引的建立对于MySQL的高效运行是很重要的。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降。如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找。下面...

2019-01-03
标签: mysql    100

mysql decimal类型与decimal长度用法详解

三者的区别介绍float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个...

2018-12-14
标签: mysql    90

MySQL慢查询日志设置和分析

MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。1)通用查询日志:记录建立的客户端连接和执行的语句。2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询(1)通用查询...

2018-10-16
标签: mysql    48

数据库分库分表,何时分?怎样分?

一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容...

2018-10-09
标签: mysql    64

分库分表操作,如何做到永不迁移数据和避免热点?

中大型项目中,一旦遇到数据量比较大,我们会采用对数据进行拆分的办法来解决数据库压力问题。拆分有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分上图中订单数据达到了...

2018-06-11
标签: mysql    51

mysql中FIND_IN_SET和INSTR的使用方法

在mysql中,有时我们在做数据库查询时,需要得到某字段中包含某个值的记录,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,这时候mysql的FIND_IN_SET函数就派上用场了,下面来具体了解一下。正常where IN() 处理字符串的查询的时候会有问题...

2018-06-05
标签: mysql    71

通俗讲解数据库三范式详解

第一范式强调的是列的原子性,即列不能够再分成其他几列。比如一张用户表: user_table (姓名,性别,电话)在实际场景中,一个用户可能有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF(即表的字段还能继续拆分)。要符合 1NF 我们只需把列(电话字段)拆分,即:user_table (...

2018-02-01
标签: mysql    59

linux下添加mysql用户并授权

平时在开发的过程中我们有时需要用到线上mysql的数据,要是本地直接用root用户登入,可能会误删数据,所以我们可以添加一个权限比较小的账号来连接线上的mysql;1、以管理员身份登录mysqlmysql -u root -p2、选择mysql数据库use mysql3、创建用户同时设置权限gran...

2018-01-02
标签: mysql    52

DB读写分离,主从数据不一致问题的解决方案

概述:在中大型项目中,为了解决大流量请求时,提高系统的吞吐量。因为在整个业务中基本都是读多写少,大部分都是读请求,很小部分是写请求。为了解决这个问题多数的解决方案是采用读写分离,主从复制的方案设计。上图:1)一个主库负责写请求,更新数据2)两个从库负责读请求,可以提高系统吞吐量3)主库和从库之间同步...

2017-11-23
标签: mysql    47

Redis和MongoDB的简单区别比较

就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。这也是有道有理有根据的,Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,...

2017-10-18
标签: mongodb  redis    43

如何保证缓存和数据库双写一致性?

在项目中缓存是经常用到的,为了减少和数据库的交互,小伙伴们利用缓存的思路如下:以上场景需要考虑的是缓存数据更新与数据库一致的问题,主要分为以下几个场景:先更新数据库,再更新缓存存在的问题场景:请求A更新值为99,请求B更新值为98上图流程:1)请求A先发起,更新数据库为99,但还没有来得及更新缓存2...

2017-10-17
标签: mysql  redis    52

关于 缓存穿透、缓存击穿、缓存雪崩、热点数据失效问题的解决方案

在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。特别是高 QPS( QPS(Query Per Second),QPS 其实是衡量吞吐量(Throughput)的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求) 的系统,每次都去查询数据库...

2017-08-17
标签: redis    68

windows安装mongodb步骤

首先当然是下载 MongoDB 了,这里是官网下载地址: MongoDB官网下载地址点击进入后会看到下载页面【Community Server】点击下一步安装过程中注意不要勾选[mongodb-compass];创建数据目录MongoDB 将数据目录存储在 db 目录下。但是这个数据目录不...

2017-07-26
标签: mongodb    55

MongoDB语法与现有关系型数据库SQL语法比较

MongoDB  被称之为最接近 sql数据库的nosql的数据库是有原因的:MongoDB语法                           ...

2017-07-20
标签: mongodb    69

Memcache,Redis对比分析

当今在数据存储方面所有的实现方案,其中主要涉及到了普通关系型数据库(MySQL/PostgreSQL),NoSQL数据库(MongoDB),内存数据库(Redis),内存Cache(Memcached),我们现在需要的是对大数据表仍保持高效的查询速度,普通关系型数据库是无法满足的。而MongoDB其...

2017-07-13
标签: redis  memcache    60

分布式中ID唯一的生成方案

在我们的业务需求中通常有需要一些唯一的ID,来记录我们某个数据的标识:某个用户的ID某个订单的单号某个信息的ID分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表。因为数据量巨大一张表无法承接,就会对其进行分库分表。但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,...

2017-07-13
标签: mysql    63

MySQL缓冲查询和非缓冲查询

MySQL的客户端有两种类型的查询:缓冲查询:将接收查询的结果并把他们存储在客户端的缓存中,而且接下来获取行记录的请求仅仅从本地内获取。优点:可以在结果集中自由地移动“当前行”的指针,这样很容易找到,因为结果是存在客户端的。缺点:需要额外的内存来存储这些结果集,而且需要大量的内存,另外,php中用来...

2017-06-15
标签: mysql    66

分布式锁的实现方式

什么是分布式锁要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。1.线程锁主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如Synchronized、Lo...

2017-06-13
标签: mysql  redis    80

Redis实际应用场景解析

      Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储;它的数据模型非常独特,用的是单线程。另一个大区别在于,你可以在开发环境中使用Redis的功能,但却不需要转到Redis。转向Redis当然也是可取的,许多开发...

2016-08-10
标签: redis    52