
数据库
文章平均质量分 85
老莫1688
生命不息 学习不止
展开
-
解读MySQL事务的隔离级别和日志登记模式选择技巧
MySQL的四种事务隔离级别:Read-uncommitted、Read-committed、Repeatable-read、 Seriailizable,相信大家都清楚各自异同。但是对于第二类、第三类隔离级别之间的性能区别和应用场景就会容易出现一些理解上的偏差,尤其是熟 悉Oracle的技术朋友,为此专门撰MySQL的四种事务隔离级别:Read-uncommitted、Read-co...转载 2019-11-22 15:26:42 · 476 阅读 · 0 评论 -
MySQL 主主复制 高可用负载均衡集群
搭建环境:两台 CentOS 7.4(192.168.117.139、192.168.117.140)MySQL 5.7HAProxy 1.5.18Keepalived 1.3.5MySQL 安装 安装笔记参考MySQL Yum 存储库安装,此处不再浪费“墨水”。两台机器按照相同步骤安装完成即可。主主复制 什么叫主主复制?就是两个 MySQL 都能读能写...转载 2019-11-07 15:29:48 · 4037 阅读 · 0 评论 -
Mysql 集群和主从复制
一、简介1.1主从(Master-Slave)主从之间是通过mysql的replication来保证数据的一致性。相对mysql cluster的数据同步方式来讲是异步的。 Replication:主节点要开启binlog,设置一个唯一的服务器id(局域网内唯一);从节点设置服务器id,binlog记录了master上的所有操作,会被复制到从节点的relaylog并在从节点上回放。...原创 2019-11-07 15:25:05 · 1274 阅读 · 0 评论 -
MySQL研究之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)
锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具。在计算机中,是协调多个进程或县城并发访问某一资源的一种机制。在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源。如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素。从这一角度来说,锁对于数据库而言就显得尤为重要。...原创 2019-11-05 16:18:07 · 419 阅读 · 0 评论 -
MySQL 5.7 的另外一个坑
看看下面这个 SQL 语句:SELECT DISTINCT guid FROM table1 WHERE user=? ORDER BY id DESC这个 SQL 语句在 MySQL 5.6 以及之前的版本都可以正确执行。但是跑到 MySQL 5.7 上就报什么 ORDER BY 的字段不在 SELECT 的列表中的 SQL 异常。解决的办法是修改 MySQL 5.7 的 sql_...原创 2019-10-24 13:35:24 · 347 阅读 · 0 评论 -
8种常见的SQL错误用法
8种常见的SQL错误用法常见SQL错误用法1. LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT * FROM operation WHERE type = 'SQLSta...原创 2019-10-24 09:11:40 · 393 阅读 · 0 评论 -
【mysql】优化总结
一、MySQL的主要适用场景1、Web网站系统2、日志记录系统3、数据仓库系统4、嵌入式系统二、MySQL架构图: 三、MySQL存储引擎概述1)MyISAM存储引擎MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表...转载 2017-05-30 11:06:58 · 366 阅读 · 0 评论 -
【Sql】sql优化之细谈
背景Mysql 数据库作为数据持久化的存储系统,在实际业务中应用广泛。在应用也经常会因为 SQL 遇到各种各样的瓶颈。最常用的 Mysql 引擎是 innodb,索引类型是 B-Tree 索引,增删改查等操作最经常遇到的问题是“查”,查询又以索引为重点(没索引不是病,慢起来太要命)。踩过 O2O 优惠券、摇一摇周边两个业务的一些坑,当谈到 SQL 优化时,想分享下innodb 下 B-Tree...转载 2017-05-30 17:09:06 · 554 阅读 · 0 评论 -
【mysql】InnoDB —— 插入缓存
背景:1. 什么是插入缓存,原理是什么?2. 它存在的意义是什么? 有什么好处? 3. 怎样利用与查看它?内容:原理及意义:插入缓存是InnoDB独有的优化模式。 我们都知道,InnoDB是基于主键的聚簇索引。通常应用程序中行纪录的插入顺序是按照主键递增的顺序进行插入的。因此,插入聚集索引一般是顺序的,不需要磁盘的随机读写。如下,假如我有这样一个表:| te...原创 2017-05-31 20:03:56 · 2937 阅读 · 0 评论 -
mysql百万级数据优化
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、...转载 2017-06-01 10:34:49 · 1100 阅读 · 0 评论 -
【Redis】redis两种备份方式
Redis提供了两种持久化选项,分别是RDB和AOF。默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rdb一个二进制文件,这种策略被称为快照。也可以手动调用Save或BGSAVE命令的:/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a pwd bgsa...原创 2017-06-02 21:06:40 · 2328 阅读 · 0 评论 -
【mysql】 GROUP_CONCAT与FIND_IN_SET
场景:现在有两个表表a中aid 主管领导1 1,2,32 2,4表b中bid 姓名1 李一2 刘二3 张三4 李四怎么联合查询出序号 主管领导 主管领导姓名1 1,2,3 李一,刘二,张三2 2,4 刘二,李四解决:SELECT a.aid AS '序号', a.`主管领导`, GROUP_CONCAT(b.`姓名`) AS `主管...原创 2017-07-10 14:54:05 · 712 阅读 · 0 评论 -
【Mysql】mysql性能优化-慢查询分析、优化索引和配置
目录一、优化概述二、查询与索引优化分析1性能瓶颈定位Show命令慢查询日志explain分析查询profiling分析查询 2索引及查询优化三、配置优化1) max_connections2) back_log3) interactive_timeout4) key_buffer_size5) ...转载 2017-05-30 11:04:44 · 477 阅读 · 0 评论 -
【sql】sql优化
查询进行优化,应尽量避免全表扫描 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 尝试下面的技巧以避免优化器错选了表扫描:· 使用ANALYZE TABLEtbl_name为扫描的表更新关键字分布。· 对扫描的表使用FORCEINDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时。 SELECT原创 2017-05-29 15:55:28 · 426 阅读 · 0 评论 -
in 和 exist 区别
select * from Awhere id in(select id from B)以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录.它的查询过程类似于以下过程List resultSet=[];Array A=(select * from A...转载 2017-05-29 15:40:01 · 354 阅读 · 0 评论 -
【Mysql】Hash索引与Btree索引
btree索引:如果没有特别指明类型,多半说的就是btree索引,它使用btree数据结构来存储数据,大多数mysql引擎都支持这种索引,archive引擎是一个例外,5.1之前这个引擎不支持任何索引,5.1开始才支持单列自增的索引。innodb使用b+tree=btree(btree已经不使用了)存储引擎以不同的方式使用btree索引,性能也各不相同,各有优劣,如:myisam使用前缀压转载 2017-05-29 12:52:29 · 721 阅读 · 0 评论 -
【Mysql】索引
在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:复制代码代码如下:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL );我们随机向里面插入了10000条记录,其中有一条:5555, admin。在查找userna原创 2017-05-29 12:43:41 · 255 阅读 · 0 评论 -
【Redis】高可用
高可用高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。 停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。解决单点问题主要有2种方式:主备方式这种通常是一台主机、一台或多台备机,在正常情况下主机对外提供服务,并把数据同步到备机,当主机宕机后,备机立刻开始服务。 R...转载 2017-05-29 12:38:33 · 402 阅读 · 0 评论 -
【Redis】实现分布式锁
使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。SETNX命令简介命令格式SETNX key value将 key 的值设为 value,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX 是SET if Not eXists的简写。返回值返回整数,具体为 -原创 2017-05-29 12:33:53 · 281 阅读 · 0 评论 -
【Redis】Redis持久化存储
Redis中数据存储模式有2种:cache-only,persistence;cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式; persistence即为内存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全。对于persistence持久化存储,Redis...原创 2017-05-29 11:30:55 · 481 阅读 · 0 评论 -
【Redis】redis实例
1、Redis和nosql简介,api调用14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点:1、 不支持SQL语法2、 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式3、 NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景4、 ...转载 2017-05-29 09:45:43 · 504 阅读 · 0 评论 -
【Mysql】《阿里巴巴Java开发手册(正式版)》--MySQL规约
(一)建表规约1.【强制】表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 unsigned tinyint( 1表示是,0表示否),此规则同样适用于 odps建表。 说明:任何字段如果为非负数,必须是 unsigned。 个人备注: Open Data Processing Service, 简称ODPS;是由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的...转载 2017-12-01 15:29:43 · 413 阅读 · 0 评论 -
【Mysql】mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法
问题场景问题出现环境: 1、在同一事务内先后对同一条数据进行插入和更新操作; 2、多台服务器操作同一数据库; 3、瞬时出现高并发现象;不断的有一下异常抛出,异常信息:org.springframework.dao.CannotAcquireLockException: ### Error updating database. Cause: java.sql.SQLExcep...原创 2017-12-21 15:13:12 · 41656 阅读 · 6 评论 -
【Redis】redis命令整合
Redis 命令参考本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版: 所有 Redis 命令文档均已翻译完毕, Redis 最重要的一部分主题(topic)文档, 比如事务、持久化、复制、Sentinel、集群等文章也已翻译完毕。文档目前描述的内容以 Redis 2.8 版本为准, 查看更新日志(change log)原创 2017-12-26 14:03:45 · 258 阅读 · 0 评论 -
一文看懂 MySQL事务隔离级别与锁
数据库锁共享锁(Shared lock)例1:----------------------------------------T1: select * from table (请想象它需要执行1个小时之久,后面的sql语句请都这么想象)T2: update table set column1='hello'过程:T1运行 (加共享锁)T2运行等待T1运行完之后再运...转载 2019-07-10 09:01:12 · 388 阅读 · 0 评论 -
CentOS7下安装mysql5.7
1、安装YUM Repo由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm然后进行repo的安装:rpm -ivh mysql57-community-release-el7-9.noa...原创 2019-01-17 19:24:52 · 228 阅读 · 0 评论 -
面试官:"谈谈分库分表吧?"
面试官:“有并发的经验没?” 应聘者:“有一点。” 面试官:“那你们为了处理并发,做了哪些优化?” 应聘者:“前后端分离啊,限流啊,分库分表啊。。” 面试官:"谈谈分库分表吧?" 应聘者:“bala。bala。bala。。” 1、分库分表的原因1、随着单库中的数据量越来越大,相应的,查询所需要的时间也越来越多,这个时候,相当于数据的处理遇到了瓶颈2、单库...原创 2019-01-11 16:42:04 · 6982 阅读 · 2 评论 -
谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?
在日常开发中,尤其是业务开发,少不了利用 Java 对数据库进行基本的增删改查等数据操作,这也是 Java 工程师的必备技能之一。做好数据操作,不仅仅需要对 Java 语言相关框架的掌握,更需要对各种数据库自身体系结构的理解。今天这一讲,作为补充 Java 面试考察知识点的完整性,关于数据库的应用和细节还需要在实践中深入学习。今天我要问你的问题是,谈谈 MySQL 支持的事务隔离级别,以及悲观...原创 2018-12-10 11:09:29 · 1017 阅读 · 0 评论 -
mysql 获取昨天日期、今天日期、明天日期以及前一个小时和后一个小时的时间
1、当前日期? 1 select DATE_SUB(curdate(),INTERVAL 0 DAY) ; 2、明天日期? 1 select DATE_SUB(curdate(),INTERVAL -1 DAY) ; 3、昨天日期? 1 select DATE_SUB...原创 2018-10-08 10:43:26 · 58244 阅读 · 0 评论 -
Mysql连接数过大导致连接超时的问题
Mysql连接数过大导致连接超时的问题,春节访问量激增,负载压力很大,程序处理较慢,然后就调整项目中的线程池和数据库连接数。可是还是没有太好的提高,追根溯源,发现数据库连接受到限制。虽然是做了读写分离,但是还是没抗住高峰。所以会有报错:“MySQL: ERROR 1040: Too many connections”。查看最大连接数上限,默认的是151? 1 2 ...原创 2018-09-11 09:45:12 · 5826 阅读 · 0 评论 -
mysql的1067错误
由于要升级MySQL到V5.6,所以拷贝my.ini和数据文件到新的系统上。 在启动服务时,又出现1067错误! 查看,主机名.err文件(xiaobin-PC.err) 2013-12-02 20:23:22 3684 [Note] Plugin 'FEDERATED' is disabled. 2013-12-02 20:23:22 ...原创 2018-09-05 19:27:04 · 368 阅读 · 0 评论 -
mysql计算两个日期之间的天数
MYSQL自带函数计算给定的两个日期的间隔天数 有两个途径可获得 1、利用TO_DAYS函数 select to_days(now()) - to_days('20120512') 2、利用DATEDIFF函数 select datediff(now(),'20120512') 参数1 - 参数2 等于间隔天数 3、利用TIMESTAMPDI...原创 2018-09-08 11:29:21 · 12716 阅读 · 0 评论 -
【数据库】58到家数据库30条军规解读(58沈剑)
军规适用场景:并发量大、数据量大的互联网业务军规:介绍内容解读:讲解原因,解读比军规更重要 一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间 (3)数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的 (4)禁止使用...转载 2018-03-22 10:47:34 · 1141 阅读 · 0 评论 -
MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结
MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要...转载 2018-03-13 16:26:40 · 9185 阅读 · 1 评论 -
【mysql】Recover InnoDB dictionary
https://twindb.com/how-to-recover-innodb-dictionary/Why do we need to recover InnoDB dictionaryc_parser is a tool from TwinDB recovery toolkit that can read InnoDB page and fet转载 2018-02-07 15:30:19 · 394 阅读 · 0 评论 -
【mysql】MYSQL常见运算符和函数
字符函数 (1)CONCAT():字符连接 SELECT CONCAT(‘IMOOC’,’-‘,’MySQL’);//IMOOC-MySQL SELECT CONCAT (first_name,last_name) AS fullname FROM test; (2)CONCAT_WS():使用指定的分隔符进行字符连接,(第一个位置指定分隔符,后面的为分割的内容) SELECT原创 2017-12-29 09:12:15 · 484 阅读 · 0 评论 -
【mysql】MySQL的Grant命令
本文实例,运行于 MySQL 5.0 及以上版本。MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。grant select on testdb.* to common_user@'%'grant insert on testdb.* t原创 2018-01-12 12:49:44 · 332 阅读 · 0 评论 -
【Jedis】JedisCommand接口说明
import java.util.List;import java.util.Map;import java.util.Set;/** * Common interface for sharded and non-sharded Jedis */public interface JedisCommands { /** * 存储数据到缓存中,若key已存在则覆盖 v原创 2017-12-19 09:32:45 · 623 阅读 · 0 评论 -
【Redis】redis数据结构简介
redis数据类型分为:字符串类型、散列类型、列表类型、集合类型、有序集合类型。redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作。原子操作:最小的操作单位,不能继续拆分。即最小的执行单位,不会被其他命令插入。高并发下不存在竞态条件。KEY的命名:一个良好的建议是article:1:title来存储ID为1的文章的标题。一、前言。1、获取k原创 2017-05-29 09:42:43 · 323 阅读 · 0 评论 -
【Redis】Redis主从实现读写分离
前言 大家在工作中可能会遇到这样的需求,即Redis读写分离,目的是为了压力分散化。下面我将为大家介绍借助AWS的ELB实现读写分离,以写主读从为例。实现 引用库文件<!-- redis客户端 --><dependency> <groupId>redis.clients</groupId> <artifactId>je...原创 2017-05-23 10:26:03 · 1353 阅读 · 0 评论