MySql
文章平均质量分 79
仰望星空的尘埃
https://github.com/a422478514
我未曾见过一个早起、勤奋、谨慎、诚实的人抱怨命运不好;良好的品格,优良的习惯,坚强的意志,是不会被假设所谓的命运击败的。
展开
-
mysql联合索引对于group by order by的影响
这几天在面试各种各样的公司,很多面试题都有问到联合索引这个东西,但我之前确实是不知道怎么用联合索引的,于是我查阅了网上很多关于联合索引的解读和分析,主要研究的是,where、group by、order by对联合索引的使用情况是怎么样的。创建一个表,包括c1,c2,c3,c4,c5字段创建联合索引,c1234(c1,c2,c3,c4)1、只有where的情况,遵从最左原则,条件必须有左边的字段,才会用到索引,中间如果断开了,则都不会用到后面的索引,例子: where c1 = '1转载 2021-11-29 11:54:22 · 1739 阅读 · 0 评论 -
理解Mysql中的Buffer pool
Buffer Pool在数据库里的地位1、回顾一下Buffer Pool是个什么东西?数据库中的Buffer Pool是个什么东西?其实他是一个非常关键的组件,数据库中的数据实际上最终都是要存放在磁盘文件上的,如下图所示。但是我们在对数据库执行增删改操作的时候,不可能直接更新磁盘上的数据的,因为如果你对磁盘进行随机读写操作,那速度是相当的慢,随便一个大磁盘文件的随机读写操作,可能都要几百毫秒。如果要是那么搞的话,可能你的数据库每秒也就只能处理几百个请求了!在对数据库执行增删改操作的时候,实.转载 2021-09-27 22:50:40 · 485 阅读 · 0 评论 -
MySQL在线DDL gh-ost使用说明
例子:Alter改表操作。MySQL上直接执行Alter语句存在诸多风险,例如Alter引起表锁、Alter耗时太久引起主从延迟等等。为了避免这些风险,通过gh-ost工具实现安全在线修改表结构,大致操作步骤及原理为: 在DB上创建ghost临时表,表结构与目标表相同,ghost临时表以下简称为新表。 新表上直接应用用户提交的Alter语句,完成表结构更新。 分批次迁移原表全量数据到新表。 同时拉取解析binlog事件,将任务期间的新增数据应用到新表。转载 2020-11-27 12:01:45 · 611 阅读 · 0 评论 -
分库分表与NewSQL数据库
最近与同行科技交流,经常被问到分库分表与分布式数据库如何选择,网上也有很多关于中间件+传统关系数据库(分库分表)与NewSQL分布式数据库的文章,但有些观点与判断是我觉得是偏激的,脱离环境去评价方案好坏其实有失公允。本文通过对两种模式关键特性实现原理对比,希望可以尽可能客观、中立的阐明各自真实的优缺点以及适用场景。NewSQL数据库先进在哪儿?首先关于“中间件+关系数据库分库分表”算不算NewSQL分布式数据库问题,国外有篇论文pavlo-newsql-sigmodrec如果根据..转载 2020-08-11 15:30:09 · 315 阅读 · 0 评论 -
MySQL如何优化CPU消耗?
谁在消耗cpu?用户+系统+IO等待+软硬中断+空闲# 祸首是谁?用户用户空间CPU消耗,各种逻辑运算正在进行大量tps 函数/排序/类型转化/逻辑IO访问…IO等待等待IO请求的完成此时CPU实际上空闲 如vmstat中的wa 很高。但IO等待增加,wa也不一定会上升(请求I/O后等待响应,但进程从核上移开了)产生影响用户和IO等待消耗了大部分cpu 吞吐量下降(tps) 查询响应时间增加 慢查询数增加 对..转载 2020-08-05 10:32:51 · 223 阅读 · 0 评论 -
SQL语法速成
本文针对关系型数据库的一般语法。限于篇幅,本文侧重说明用法,不会展开讲解特性、原理。一、基本概念数据库术语 数据库(database)- 保存有组织的数据的容器(通常是一个文件或一组文件)。 数据表(table)- 某种特定类型数据的结构化清单。 模式(schema)- 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式。 列(column)- 表中的一个字段。所...转载 2020-08-05 10:29:23 · 310 阅读 · 0 评论 -
MySql分库分表
作者:尜尜人物cnblogs.com/littlecharacter/p/9342129.html本文目录一、数据库瓶颈 IO瓶颈 CPU瓶颈 二、分库分表 水平分库 水平分表 垂直分库 垂直分表 三、分库分表工具四、分库分表步骤五、分库分表问题 非partition key的查询问题 非partition key跨库跨表分页查询问题 扩容问题 六、分库分表总结七、分库分表示例一、数据库.转载 2020-07-29 09:53:08 · 185 阅读 · 0 评论 -
MySQL中IS NULL、IS NOT NULL、!=不能用索引
不知道从什么时候开始,网上流传着这么一个说法:MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!= 这些条件时便不能使用索引查询,只能使用全表扫描。这种说法愈演愈烈,甚至被很多同学奉为真理。咱啥话也不说,举个例子。假如我们有个表s1,结构如下:CREATE TABLE s1 ( id INT NOT NULL AUTO_INCREMENT, key1 VARCHAR(100), key2 VARCHAR(100), key3 VAR转载 2020-07-21 15:50:35 · 550 阅读 · 0 评论 -
Mysql事务超时
本文概览:介绍了超时有关的概念:@Transaction的timeout、mybatis的timeout、mysql的innodb_lock_wait_timeout。1 问题1.1 背景在一个事务中完成解析一个大文件,分批存入到数据库。遇到问题,执行时间比较长,就讨论了事务超时的问题,担心执行时间太长,事务超时自动回滚了。为了考虑这个问题,需要考虑如下超时相关的设置:一个事务的超时时间。spring的@Transactional 一个stametn的执行时间。包括mybais的tim转载 2020-07-16 12:25:43 · 7775 阅读 · 1 评论 -
JDBC-MySql超时
前言本文讨论的源码是基于connectorJ 5.1.37,最新版的jar包是5.1.38,两者对于该处的逻辑并无差别。connectorJ mysql官网下载地址:点击打开链接(http://dev.mysql.com/downloads/connector/j/)一、JDBC API支持java.sql.Statement中定义的查询超时规范:/** * Sets the number of seconds the driver will wait fo...转载 2020-07-16 11:47:23 · 454 阅读 · 0 评论 -
canal+springboot
简介canal 是阿里巴巴的一个开源项目,基于java实现,整体已经在很多大型的互联网项目生产环境中使用,包括阿里、美团等都有广泛的应用,是一个非常成熟的数据库同步方案,基础的使用只需要进行简单的配置即可。canal是通过模拟成为mysql 的slave的方式,监听mysql 的binlog日志来获取数据,binlog设置为row模式以后,不仅能获取到执行的每一个增删改的脚本,同时还能获取到修改前和修改后的数据,基于这个特性,canal就能高性能的获取到mysql数据数据的变更。github地址转载 2020-07-14 16:56:22 · 1239 阅读 · 0 评论 -
常见Mysql的慢查询优化方式
1、概念MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是记录运行10秒以上的语句。默认情况下,MySQL数据库并不启动慢查询日志,需要手动来设置这个参数。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志转载 2020-07-13 22:55:30 · 876 阅读 · 0 评论 -
MySQL覆盖索引
一、覆盖索引覆盖索引(covering index)指一个查询语句的执行只用从索引中就能够取得,不必从数据表中读取。也可以称之为实现了索引覆盖。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。二、覆盖索引实例1.未建立索引前select SQL_NO_CACHE count(name) from index_test where name = '小明' and id_card = '142701199999999999' and type = '2' and h.转载 2020-07-10 13:57:45 · 373 阅读 · 0 评论 -
MySQL force Index 强制索引概述
以下的文章主要介绍的是MySQLforce Index 强制索引,以及其他的强制操作,其优先操作的具体操作步骤如下:我们以MySQL中常用的hint来进行详细的解析,如果你是经常使用Oracle的朋友可能知道,Oracle的hincvt功能种类很多,对于优化sql语句提供了很多方法。同样,在MySQL里,也有类似的hint功能。下面介绍一些常用的。强制索引MySQL FORCE INDEXSELECT*FROMTABLE1FORCEINDEX(FIELD1)…以上...转载 2020-07-10 13:54:42 · 785 阅读 · 0 评论 -
MySQL优化之hints
大妈让我整理MySQL优化的一些工具和方法,整理到MySQL hints的时候,没有找到满意的中文文章,于是自己翻译了一篇关于MySQL hints的小文章。如下:每个程序员都喜欢优化,甚至有时我们知道不应该去做。为了满足大家的意愿,MySQL提供了一些关键字,在SQL语句中使用这些关键字,可以使得数据库按照明确的优化指令执行SQL语句。应当指出的是,不正确的使用hints很有可能使你的查询语句表现的更糟糕,在使用hints之前需要确保这是有意义的。通常你可以使用explain查看执行计划并阅读hi转载 2020-07-10 13:53:24 · 1767 阅读 · 0 评论 -
MySql在RR隔离级别下能否解决幻读问题
很多文章提到mysql的默认隔离级别是rr,且rr隔离级别是能够解决幻读的。如果能解决,串行化的存在意义何在呢,其实在rr隔离级别下,显然是不可以解决所有幻读的问题的的。如图:原创 2020-07-03 16:10:56 · 1525 阅读 · 0 评论 -
sql error : The table is full
SpringBoot项目使用mybatis操作mysql,批量执行插入语句时,提示sql error:the table xxx is full。询问DBA得知可能是两个问题:1、mysql所在机器硬盘满导致2、临时表空间的缓冲区需要调整本人查看mysql所在机器确实硬盘空间剩余<2%,修改之。。。...原创 2020-07-02 17:54:38 · 474 阅读 · 0 评论 -
我以为我对数据库索引十分了解,直到我遇到了阿里面试官
前言写数据库,我第一时间就想到了MySQL、Oracle、索引、存储过程、查询优化等等。不知道大家是不是跟我想得一样,我最想写的是索引,为啥呢?以下这个面试场景,不知道大家熟悉不熟悉:面试官:数据库有几千万的数据,查询又很慢我们怎么办?面试者:加索引。面试官:那索引有哪些数据类型?索引是怎么样的一种结构?哪些字段又适合索引呢?B+的优点?聚合索引和非聚合索引的区别?为什么说索...转载 2020-03-19 14:06:04 · 564 阅读 · 0 评论 -
mysql 函数from_unixtime返回null
先说问题:mysql中表字段为releaseTime bigint(20) 存的是精确到毫秒的java timestamp。用select from_unixtime(releaseTime) from table返回null解决方案:用select from_unixtime(releaseTime/1000) from table返回正常简介我们一般使用字段类型int(...原创 2019-09-04 16:43:00 · 7170 阅读 · 0 评论 -
二、InnodDB和MyIsam引擎对比以及索引实现原理
一、MyISAM和InnoDB的索引实现MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来...原创 2018-03-25 19:04:18 · 2048 阅读 · 2 评论 -
三、MySql中的事务与事务隔离级别
事务事务就是一组原子性的sql,或者说一个独立的工作单元。 事务就是说,要么mysql引擎会全部执行这一组sql语句,要么全部都不执行(比如其中一条语句失败的话)。比如,tim要给bill转账100块钱: 1.检查tim的账户余额是否大于100块; 2.tim的账户减少100块; 3.bill的账户增加100块; 这三个操作就是一个事务,必须打包执行,要么全部成功,要么全部不执行,...原创 2018-03-28 13:18:25 · 406 阅读 · 0 评论 -
四、MySql慢查询
一、简介开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。二、参数说明slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录三、设置步骤1.查看慢查...原创 2018-06-06 11:50:10 · 142 阅读 · 0 评论 -
五、MySQL主从复制原理
MySQL主从复制原理、半同步操作步骤及原理标签(空格分隔): mysql1.1 企业Linux运维场景数据同步方案1.1.1 文件级别的异机同步方案1、scp/sftp/nc 命令可以实现远程数据同步。 2、搭建ftp/http/svn/nfs 服务器,然后在客户端上也可以把数据同步到服务器。 3、搭建samba文件共享服务,然后在客户端上也可以把数据同步到服务器。 http://taokey....原创 2018-06-13 15:54:25 · 395 阅读 · 0 评论 -
六、MVCC
1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用. 大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,...原创 2018-06-24 18:26:03 · 190 阅读 · 0 评论 -
七、MySQL 死锁检查处理
正常情况下,死锁发生时,权重最小的连接将被kill并回滚。但是为了找出语句来优化,启用可启用死锁将死锁信息记录下来。 #step 1:窗口一 mysql> start transaction; mysql> update aa set name='aaa' where id = 1; #step 2:窗口二 mysql>...原创 2018-08-14 11:00:54 · 424 阅读 · 0 评论 -
八、mysql死锁问题分析
线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。 Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。 为了更系统的分析问题,本文将从死锁检测、索引隔离级别与锁的关系、死锁成因、问题定位这五个方面来展开讨论。 图1 ...原创 2018-08-14 11:13:23 · 252 阅读 · 0 评论 -
九、mysql锁
如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议。 第一章 MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引...原创 2018-08-15 23:30:41 · 129 阅读 · 0 评论 -
十、MySql8设置事务隔离级别
MySQL8查询tx_isolation为空的问题解决只要把tx_isolation换成transaction_isolation就行了在学习mysql过程中,想查询一下当前数据库的隔离级别于是SHOW VARIABLES LIKE ‘tx_isolation’;发现为空,如图 MySQL8查询tx_isolation为空的问题解决 于是我去查询了一下官方的文档 MySQ...原创 2018-09-04 17:14:01 · 5260 阅读 · 2 评论 -
MySql添加用户以及授予权限
授予所有Ip下的daquan:daquan拥有所有权限:grant all privileges on *.* to daquan@'%' identified by 'daquan';添加用户以root用户登录数据库,运行以下命令:create user zhangsan identified by 'zhangsan';上面的命令创建了用户zhangsan,密码是zhan...原创 2019-04-28 19:24:27 · 369 阅读 · 0 评论 -
MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略...转载 2019-04-29 18:46:08 · 221 阅读 · 0 评论 -
MySQL 创建索引
MySQL 索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。创建索引时,你需要...原创 2019-04-30 15:36:36 · 296 阅读 · 0 评论 -
MySQL 8.0新增特性详解
1.MySQL8.0的版本历史2016-09-12第一个DM(development milestone)版本8.0.0发布2018-04-19第一个GA(General Availability)版本开始,8.0.11发布2018-07-27下一个GA版本,8.0.12发布2018-10-22下一个GA版本,8.0.13发布2019-01-21下一个GA版本,8.0.14...转载 2019-06-14 11:49:16 · 643 阅读 · 2 评论 -
MySql解除安全模式
【MySQL笔记】解除输入的安全模式,Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -&g...原创 2019-06-17 19:05:45 · 1446 阅读 · 0 评论 -
mysql的limit分页
今天踩坑了,这样用了limit函数:想分批处理数据库中id为1-1000,1001-2000,2001-3000的数据,limit 写成0,1000 1000,20002000,3000其实应该是0,10001000,10002000,1000因为limit n,m不是说从第n条取到第m条,而是从n开始,往后取m条,返回的是m条记录,不是m-n条记...原创 2019-08-03 18:16:06 · 633 阅读 · 0 评论 -
线上数据到导出到本地
先说下需求针对有批陈年老数据需要做个分析统计新功能,写了个定时任务每天处理前一天的,但是历史数据的处理就比较尴尬了,如果写临时代码上线的话如果代码有bug肯定要重复上线n次&麻烦DBA重做线上数据表,所以需要把生产数据dump到本地处理,但是本地又有自己的一套测试数据,所以新建了一张临时表用来存放线上dump下来的数据。1、mysqldumpmysqldump -u username...原创 2019-07-31 19:39:01 · 1272 阅读 · 3 评论 -
一、MySql中常见的锁以及开发中常见的悲观锁和乐观锁
MySQL锁相对于其他的数据库而言,MySQL的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制。根据不同的存储引擎,MySQL中锁的特性可以大致归纳如下:行锁表锁页锁MyISAM√BDB√√InnoDB√√开销、加锁速度、死锁、粒度、并发性能表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,...原创 2018-03-18 14:13:25 · 600 阅读 · 0 评论