MySQL
文章平均质量分 94
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
MySQL死锁如何处理
转载自MySQL死锁如何处理前提笔者负责的一个系统最近有新功能上线后突然在预警模块不定时报出MySQL死锁导致事务回滚。幸亏,上游系统采用了异步推送和同步查询结合的方式,感知到推送失败及时进行了补偿。于是,笔者争取了一点时间详细分析了导致死锁的多个事务的执行时序,分析并且得出解决方案。死锁场景复现首先,MySQL的服务端版本是5.7(小版本可以基本忽略),使用了InnoDB。有一张用户数据表的schema设计如下(无关字段已经屏蔽掉):CREATETABLE`t_user_...转载 2020-11-08 11:17:04 · 994 阅读 · 0 评论 -
MySQL UPDATE 语句一个“经典”的坑
转载自MySQL UPDATE 语句一个“经典”的坑来源:ju.outofmemory.cn/entry/336774 有问题的SQL语句 why? 倒回去再重试验一把 最近好几次有开发同学在钉钉上问我,比如下图:问题归纳起来就是:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新...刚遇到这个问题的时候,我拿到这条语句直接在测试库里面执行了一把,发现确实有问题,但和开发描述的还是 有区别 ,这里我用测试数据来模拟下:有问题的SQL..转载 2020-11-08 10:55:15 · 401 阅读 · 0 评论 -
MySQL数据库面试题(2020最新版)
转载自·MySQL数据库面试题(2020最新版)数据库基础知识为什么要使用数据库数据保存在内存优点:存取速度快缺点:数据不能永久保存数据保存在文件优点:数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便数据保存在数据库1)数据永久保存2)使用SQL语句,查询方便效率高。3)管理数据方便什么是SQL?结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。作用:用于存取数据、查询.转载 2020-05-14 10:18:43 · 3135 阅读 · 0 评论 -
如何基于Canal 和 Kafka,实现 MySQL 的 Binlog 近实时同步
转载自如何基于Canal 和 Kafka,实现 MySQL 的 Binlog 近实时同步近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存、更新或者软删除)到一个另一个数据源,持久化之前需要清洗数据并且构建一个相对合理的便于后续业务数据统计、标签系统构建等扩展功能的数据模型。基于当前团队的资源和能力,优先调研了Alibaba开源中间件Canal的使用。这篇文章简单介绍一下如何快.转载 2020-05-10 13:55:01 · 447 阅读 · 0 评论 -
面试官问:如果MySQL引起CPU消耗过大,你会怎么优化
转载自面试官问:如果MySQL引起CPU消耗过大,你会怎么优化谁在消耗cpu?用户+系统+IO等待+软硬中断+空闲祸首是谁?用户用户空间CPU消耗,各种逻辑运算正在进行大量tps函数/排序/类型转化/逻辑IO访问…用户空间消耗大量cpu,产生的系统调用是什么?那些函数使用了cpu周期?IO等待等待IO请求的完成此时CPU实际上空闲...转载 2020-05-05 14:43:55 · 327 阅读 · 0 评论 -
Mysql调优你不知道这几点,就太可惜了
转载自Mysql调优你不知道这几点,就太可惜了一、Mysql的逻辑分层Mysql分为:连接层、服务层、引擎层、存储层。当客户端向服务端发起操作请求的时候,执行过程是这样的:1、客户端端与Mysql服务端的连接层建立连接,根据请求类型去选择相应的服务层的请求接口。二、SQL优化1、Insert的优化在执行insert操作时经常遇到插入多条数据的时候,例如: ...转载 2020-05-05 14:28:08 · 387 阅读 · 0 评论 -
mysql出现unblock with 'mysqladmin flush-hosts'
转载自mysql出现unblock with 'mysqladmin flush-hosts朋友发来消息,说一个系统应用登录的时候提示连接超时,让帮忙处理一下。问他应用和数据库是否都正常,回复说数据库好像没有问题,但是应用日志报无法连接数据库。数据库版本是:5.5.53让他telnet数据库是否是通的,回复说不通,并发来了信息提示:# telnet 8.8.9.9 33...转载 2020-01-23 15:37:04 · 2002 阅读 · 0 评论 -
MySQL 中的重做日志,回滚日志以及二进制日志的简单总结
转载自MySQL 中的重做日志,回滚日志以及二进制日志的简单总结MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。其中重做日志和回滚日志与事务操作息息相关,二进制日志也与...转载 2019-04-27 10:50:21 · 288 阅读 · 0 评论 -
史上最全MySQL 大表优化方案(长文)
转载自史上最全MySQL 大表优化方案(长文)当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:一、单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑...转载 2019-05-02 19:28:15 · 350 阅读 · 0 评论 -
永远不要在 MySQL 中使用 UTF-8
转载自永远不要在 MySQL 中使用 UTF-8最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误:Incorrectstringvalue:‘\xF0\x9F\x98\x83<…’forcolumn‘summary’atrow1我用的是 UTF-8 编码的...转载 2019-04-26 22:41:09 · 170 阅读 · 0 评论 -
业务库负载翻了百倍,我做了什么来拯救MySQL架构
转载自业务库负载翻了百倍,我做了什么来拯救MySQL架构作者介绍杨建荣,竞技世界资深DBA,前搜狐畅游数据库专家,Oracle ACE,YEP成员。拥有近十年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优。拥有Oracle 10g OCP、OCM、MySQL OCP认证,对Shell、Java有一定功底。每天通过微信、 博客进行技术分享,已连续坚持1800多天。最近...转载 2019-03-24 11:36:26 · 332 阅读 · 0 评论 -
MySQL 大表优化方案(1)
转载自 干货!!!MySQL 大表优化方案(1)当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万...转载 2018-12-30 12:43:00 · 209 阅读 · 0 评论 -
什么是 binlog
转载自 什么是 binlog引言为什么写这篇文章?大家当年在学MySQL的时候,为了能够迅速就业,一般是学习一下MySQL的基本语法,差不多就出山找工作了。水平稍微好一点的童鞋呢还会懂一点存储过程的编写,又或者是懂一点索引的创建和使用。但是呢,基本上大家都忽略了对底层知识的学习。为什么呢?因为工作中很少用到嘛。然后呢,市面上流传的大部分这种底层的知识,又比较偏运维,研发懂这么多意义也...转载 2018-11-18 11:01:35 · 880 阅读 · 0 评论 -
mybatis 注解传入 list 集合
转载自 mybatis 注解传入 list 集合这里写一个查询的sql语句首先看 mapper @SelectProvider(type = SqlModel.class, method = "listDeviceIndex") @Results(value = { @Result(column = "index_id",property = ...转载 2018-11-17 14:11:03 · 638 阅读 · 0 评论 -
select count(*)底层究竟干了啥么?
转载自select count(*)底层究竟干了啥么?“SELECT COUNT( * ) FROM t” 是个再常见不过的 SQL 需求了。在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。而 MyISAM 表中可以快速取到表的行数。这些实践经验的背后是怎...转载 2019-05-02 14:23:26 · 261 阅读 · 0 评论 -
MySQL - InnoDB特性 - Buffer Pool漫谈
转载自MySQL - InnoDB特性 - Buffer Pool漫谈缓存管理是DBMS的核心系统,用于管理数据页的访问、刷脏和驱逐;虽然操作系统本身有page cache,但那不是专门为数据库设计的,所以大多数数据库系统都是自己来管理缓存。由于几乎所有的数据页访问都涉及到Buffer Pool,因此buffer pool的并发访问控制尤为重要,可能会影响到吞吐量和响应时间,本文主要回顾一...转载 2019-05-02 15:07:49 · 168 阅读 · 0 评论 -
MYSQL性能优化的最佳20+条经验
转载自MYSQL性能优化的最佳20+条经验今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库...转载 2019-05-02 18:56:54 · 254 阅读 · 0 评论 -
【开源组件】一份值得收藏的的 MySQL 规范
转载自【开源组件】一份值得收藏的的 MySQL 规范数据命名规范 所有数据库对象名称必须使用小写字母并用下划线分割。 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)。 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符。 临时库表必须以 tmp_ 为前缀并以日期为后缀,备份表必须以 ba...转载 2019-07-09 22:02:52 · 134 阅读 · 0 评论 -
MYSQL 入门全套
转载自MYSQL 入门全套MySQL简介1、什么是数据库 ?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得...转载 2019-07-09 22:02:39 · 151 阅读 · 0 评论 -
MySQL主从数据库配置和常见问题
转载自 MySQL主从数据库配置和常见问题本篇主要介绍MySQL的主从数据配置方法。公司运维能力不是太好,数据库最近出了一次问题,导致丢失了一天的数据,并且某个服务宕机一晚上。为了避免再次出现类似问题,我决定添加一个Slave服务器,以避免数据丢失和服务宕机的问题。MySQL本身就提供了主从备份方式,下面介绍配置方法。1. 环境说明两台服务器,系统均为CentOS7系统,M...转载 2019-08-31 15:01:36 · 351 阅读 · 0 评论 -
面试 - 要不简单聊一下你对MySQL索引的理解?
转载自面试 - 要不简单聊一下你对MySQL索引的理解?MySQL索引?这玩意儿还能简单聊?明显是在挖坑,幸好老夫早有准备,切听我一一道来。一、索引是什么?索引是帮助MySQL高效获取数据的数据结构。二、索引能干什么?索引非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。 索引能够轻易将查询性能提高好几个数量级,总的来说就是可以明显的提高查询效率。三...转载 2019-08-31 20:45:14 · 209 阅读 · 0 评论 -
面试被问Mysql没答上来?阿里P5:总结了55道常见面试题,收藏一波
转载自面试被问Mysql没答上来?阿里P5:总结了55道常见面试题,收藏一波正文开始前,分享阿里 P8 高级架构师吐血总结的 《Java 核心知识体系&面试资料.pdf》, 非卖课程的哟!阿里 P8 级高级架构师吐血总结的一份 Java 核心知识.pdf, 内容覆盖很广,Java 核心基础、Java 多线程、高并发、Spring、微服务、Netty 与 RPC、Zookeepe...转载 2019-08-31 21:01:40 · 2818 阅读 · 0 评论 -
MySQL的表数据复制
A表B表复制A表的数据code到B表一、普通SQLUPDATE A a,B b set b.`code`=a.`code` where a.`name`=b.`name`;二、存储过程#定义复制存储过程drop procedure if exists copy_A_to_B;create procedure copy_A_to_B()begin declare a_name varch...原创 2018-04-29 15:04:25 · 218 阅读 · 0 评论 -
史上最全的 MySQL 高性能优化实战总结
转载自 史上最全的 MySQL 高性能优化实战总结一、前言MySQL 对于很多 Linux 从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行 MySQL 的优化之前必须要了解的就是 MySQL 的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL 的优化器能够按照预想的合理方式运行而已。今天给大家体验 MySQL 的优化实...转载 2018-10-29 13:24:21 · 230 阅读 · 0 评论 -
为什么MySQL将会是一个更好的NoSQL
转载自 为什么MySQL将会是一个更好的NoSQL前言MySQL是一个更好的NoSQL数据库。当考虑到NoSQL的使用案例,比如对Key/Value键值存储来讲,MySQL在性能、易用性和稳定性方面更有意义。MySQL毕竟是一款成熟稳定的产品,在互联网上有大量的在线教程,范围从操作到失败案例,从主从复制到其它不同模式的应用,不一而足。基于这个原因,MySQL相比其他新兴并没有经过多年洗礼...转载 2018-09-22 19:40:47 · 2736 阅读 · 0 评论 -
浅谈MySQL的B树索引与索引优化
转载自 浅谈MySQL的B树索引与索引优化MySQL的MyISAM、InnoDB引擎默认均使用B+树索引(查询时都显示为“BTREE”),本文讨论两个问题: 为什么MySQL等主流数据库选择B+树的索引结构? 如何基于索引结构,理解常见的MySQL索引优化思路? 索引结构的选择基于这样一个性质:大数据量时,索引无法全部装入内存。 一、为什么索引无法全部装入内存?...转载 2018-10-05 13:13:46 · 146 阅读 · 0 评论 -
Mysql的安装与远程登录
一、安装(1)linux版 A.linux普通版 http://www.jb51.net/article/104107.htm B.ubuntu版 1.安装sudo apt-get install mysql-serverapt-get isntall mysql-clientsudo apt-get install libmysqlclient-dev原创 2018-05-24 10:01:24 · 128 阅读 · 0 评论 -
Mysql中的行级锁、表级锁、页级锁
转载自 Mysql中的行级锁、表级锁、页级锁 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。行级锁行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁...转载 2018-07-25 00:03:55 · 175 阅读 · 0 评论 -
MySQL中的读锁和写锁
转载自 MySQL中的读锁和写锁 在数据库的锁机制中介绍过,数据的锁主要用来保证数据的一致性的,数据库的锁从锁定的粒度上可以分为表级锁、行级锁和页级锁。在我的博客中重点介绍过MySQL数据库的行级锁。这篇文章主要来介绍一下MySQL数据库中的表级锁。本文提到的读锁和写锁都是MySQL数据库的MyISAM引擎支持的表锁的。而对于行级锁的共享读锁和互斥写锁请阅读MySQL中的共享锁与排他...转载 2018-07-25 00:03:44 · 912 阅读 · 0 评论 -
MySQL中的共享锁与排他锁
转载自 MySQL中的共享锁与排他锁 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念、使用方式及注意事项等。共享锁(Share Lock)共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上...转载 2018-07-25 00:03:32 · 195 阅读 · 0 评论 -
从开发者角度谈Mysql主键
转载自 从开发者角度谈Mysql主键说在前面零度mysql一直比较薄弱,俗话说的好,不会mysql的程序员不是好程序员,刚刚好认识mysql大牛刘龘刘,刚刚好就有了这些文章,主要是刘龘刘大牛写的,零度稍微修改成文,零度觉得这系列文章非常不错,可以从开发者角度看看mysql。主题使用自增主键的好处使用非自增主键坏处总结使用自增主键的好处那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,...转载 2018-05-07 10:39:23 · 198 阅读 · 0 评论 -
并发场景下MySQL存在的问题及解决思路
转载自 并发场景下MySQL存在的问题及解决思路目录 1、背景 2、表锁导致的慢查询的问题 3、线上修改表结构有哪些风险? 4、一个死锁问题的分析 5、锁等待问题的分析 6、小结一、背景对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大...转载 2018-05-20 09:47:43 · 332 阅读 · 0 评论 -
mysql语句性能开销检测profiling详解
转载自 mysql语句性能开销检测profiling详解之前我介绍过msyql查询优化explain检查命令的使用,explain主要是检查sql语句的基本性能,sql是否优秀,但不能查看具体的涉及硬件资源的开销,今天要介绍的这个profiling工具可以更细节的查看资源的开销,比较详细。首先这款性能检查工具是针对每个session生效的,session结束了就要重要发起查询检测。默认是关闭的,需...转载 2018-05-05 09:55:34 · 727 阅读 · 0 评论 -
mysql查询优化explain命令详解
转载自 mysql查询优化explain命令详解mysql查询优化的方法有很多种,explain是工作当中用的比较多的一种检查方式。explain翻译即解释,就是看mysql语句的查询解释计划,从解释计划我们能很清楚的看到解释的语句有没有合理用到索引,扫描了多少行数,有没有触及全表扫描、用到临时表等影响慢查询的原因。使用很简单,如explain select * from user ...执行后会...转载 2018-05-06 14:31:57 · 234 阅读 · 0 评论 -
MySQL 的索引是什么?怎么优化?
转载自 MySQL 的索引是什么?怎么优化?摘要: 索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引。索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了Explain,用于显示SQ...转载 2018-04-18 20:18:45 · 179 阅读 · 0 评论 -
Mysql的安装与远程登录
一、安装(1)linux版 A.linux普通版 http://www.jb51.net/article/104107.htm B.ubuntu版 1.安装sudo apt-get install mysql-serverapt-get isntall mysql-clientsudo apt-get install libmysqlclient-d原创 2018-02-03 13:49:03 · 306 阅读 · 0 评论 -
MySQL数据库开发的 36 条军规
转载自 MySQL数据库开发的 36 条军规核心军规 尽量不在数据库做运算 控制单表数据量 纯INT不超过10M条,含Char不超过5M条 保持表身段苗条 平衡范式和冗余 拒绝大SQL,复杂事务,大批量任务 字段类军规 用好数值字段,尽量简化字段位数 把字符转化为数字 优先使用Enum或Set 避免使用Nu...转载 2018-07-30 12:55:56 · 319 阅读 · 0 评论 -
MySQL函数
转载自 MySQL函数MySQL聚合函数MySQL聚合函数 - 提供最常用的MySQL聚合函数的简要概述。 avg()函数 - 计算一组值或表达式的平均值。 count()函数 - 计算表中的行数。 instr()函数 - 返回子字符串在字符串中第一次出现的位置。 sum()函数 - 计算一组值或表达式的总和。 min()函数 - 在一组值中找到最小值。 max()函数 - ...转载 2018-08-20 19:12:33 · 165 阅读 · 0 评论 -
MySQL datediff()函数
转载自 MySQL datediff()函数MySQL DATEDIFF函数介绍MySQL DATEDIFF函数计算两个DATE,DATETIME或TIMESTAMP值之间的天数。MySQL DATEDIFF函数的语法如下:DATEDIFF(date_expression_1,date_expression_2);DATEDIFF函数接受两个任何有效日期或日期时间值的参...转载 2018-09-01 20:13:42 · 3515 阅读 · 0 评论 -
去 BAT 面试,总结了这 55 道 MySQL 面试题
转载自 去 BAT 面试,总结了这 55 道 MySQL 面试题1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ? 2、Mysql的技术特点是什么?Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后...转载 2018-10-12 19:28:46 · 406 阅读 · 0 评论