
mysql
大神,快来碗里
专注于Java相关技术
展开
-
mysql数据备份
直接拷贝文件myisam存储引擎只要对应表的后缀为.frm .MYD .MYI,三个文件拷贝到对应的数据库文件夹就行innodb存储引擎先通过SHOW CREATE TABLE table命令,查询出表的创建语句,然后在备份库中执行执行ALTER TABLE table DISCARD TABLESPACE,丢弃的表空间拷贝表的后缀为.ibd文件到对应的数据库文件夹,然后授权chow...原创 2019-11-14 14:58:36 · 10828 阅读 · 0 评论 -
mysql(3)索引
思维导图-索引篇下面是我补充的一些内容为什么索引能提高查询速度先从 MySQL 的基本存储结构说起MySQL的基本存储结构是页(记录都存在页里边):各个数据页可以组成一个双向链表每个数据页中的记录又可以组成一个单向链表每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录...原创 2019-04-30 13:24:03 · 12086 阅读 · 0 评论 -
mysql(4)数据库主从同步的3种一致性方案实现,及优劣比较
数据主从同步的由来互联网的很多业务,特别是在高并发的场景下,基本都是读远远大于写,如果数据库读和写的压力都同在一台主机上,这显然不太合理。于是,把一台数据库主机分为单独的一台写主库(主要负责写操作),而把读的数据库压力分配给读的从库,而且读从库可以变为多台,这就是读写分离的典型场景如下:为了进一步的降低数据库端的压力(高并发的瓶颈),这个时候也会在业务层部署分布式缓存集群(redis、me...原创 2019-05-01 13:32:31 · 17556 阅读 · 0 评论 -
mysql(5)NoSQL和SQL的区别,NoSQL的使用场景和选型比较
什么是NoSQLNoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称,它具有非关系型、分布式、不提供ACID的数据库设计模式等特征。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。SQL 和 ...原创 2019-05-01 13:33:51 · 22884 阅读 · 0 评论 -
mysql(6)慢查询优化、索引优化、以及表等优化总结
MySQL优化概述MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈。CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上。我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。除了服务器硬件的性能瓶颈,对于MySQL系统本身...原创 2019-05-01 13:34:53 · 16218 阅读 · 1 评论 -
mysql(7)有哪些存储引擎,各自的优缺点,应用场景
经常面试都会问到MYSQL有哪些存储引擎,以及各自的优缺点。今天主要分享常见的存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)等,以及最常用的MyISAM与InnoDB两个引擎 ,文章尾部有两者的详细比较。MySQL常用存储引擎介绍1.InnoDB 引擎(MySQL5.5以后默认使用)MySQL 5.5 及以后版本中的默认存储引擎,他...原创 2019-05-01 13:36:00 · 16286 阅读 · 0 评论 -
mysql(10)MySQL行锁、表锁、悲观锁、乐观锁的特点与应用
我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)。如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素,从这一角度来说,锁对于数据库而言就显得尤为重要。MySQL锁概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如:MyISAM和MEMORY...原创 2019-05-01 13:39:32 · 16028 阅读 · 0 评论 -
mysql(9)MySQL数据库的索引原理、与慢SQL优化的5大原则
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出...原创 2019-05-01 13:41:45 · 16032 阅读 · 0 评论 -
mysql(12) 20+条MySQL性能优化的最佳经验
1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例://...原创 2019-05-15 08:22:53 · 10764 阅读 · 0 评论 -
mysql(13) 大众点评订单系统分库分表实践
原大众点评的订单单表早就已经突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想的情况。去年大量抢购活动的开展,使数据库达到瓶颈,应用只能通过限速、异步队列等对其进行保护;业务需求层出不穷,原有的订单模型很难满足业务需求,但是基于原订单表的DDL又非常吃力,无法达到业务要求。随着这些问题越来越突出,订单数据库的切分就愈发急迫了。这次切分,我们的目标是未来十年内不需要担...原创 2019-05-15 08:27:50 · 10981 阅读 · 1 评论 -
mysql(14) 分库与分表带来的分布式困境与应对之策
随着用户数的不断增加,以及数据量的不断增加,通过分库与分表的方式提高查询性能的同时,带来了一系列分布式困境。数据迁移与扩容问题前面介绍到水平分表策略归纳总结为随机分表和连续分表两种情况。连续分表有可能存在数据热点的问题,有些表可能会被频繁地查询从而造成较大压力,热数据的表就成为了整个库的瓶颈,而有些表可能存的是历史数据,很少需要被查询到。连续分表的另外一个好处在于比较容易,不需要考虑迁移旧的数...原创 2019-05-15 08:33:48 · 10914 阅读 · 0 评论 -
mysql(0) 汇总
一、索引B+ Tree 原理1. 数据结构B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 ke...原创 2019-05-15 09:06:10 · 10981 阅读 · 0 评论 -
mysql(2)相关知识
文章目录1. Mysql 表.idb文件损坏,无法启动数据库?2. 如何查找MySQL中查询慢的SQL语句3. Mysql的.frm .MYD .MYI .idb?4. 碎片整理5.数据库什么情况下索引会失效6.数据库高并发下的优化思路;7. mysql有哪些锁,意向锁有什么用8.数据库索引为什么要用 B+ 树而不用红黑树呢?9.最左前缀的解释10.什么是redo日志、什么是undo日志11.数...原创 2019-04-29 22:16:02 · 10876 阅读 · 0 评论 -
mysql(1)基本SQL语句
一、基础文章目录一、基础二、创建表三、修改表四、插入五、更新六、删除七、查询DISTINCTLIMIT八、排序九、过滤十、通配符十一、计算字段十二、函数文本处理日期和时间处理数值处理汇总十三、分组十四、子查询十五、连接内连接自连接自然连接外连接十六、组合查询十七、视图十八、存储过程使用存储过程的好处创建存储过程十九、游标二十、触发器二十一、事务处理二十二、字符集二十三、权限管理创建账户修改账户名...原创 2019-04-29 21:48:50 · 10671 阅读 · 0 评论 -
MySQL日志文件之错误日志和慢查询日志详解
实验环境:MySQL Community Server (GPL) 5.7.17、Ubuntu 16.04一、MySQL日志文件分类官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html日志文件记录了影响MySQL数据库的各种类型活动。常见的日志有以下几个:1、错误日志(error log);2、慢查询日志(slow...原创 2019-05-01 21:45:48 · 14733 阅读 · 0 评论 -
mysql中在一个千万级的数据库查寻中,如何提高查询效率
一、数据库设计方面1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引;2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: selec...原创 2019-05-01 22:01:44 · 10559 阅读 · 0 评论 -
永远不要在MySQL中使用UTF-8
永远不要在MySQL中使用UTF-8最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库...原创 2019-04-27 17:53:05 · 14240 阅读 · 0 评论 -
精选(8) MySQL 每秒 570000 的写入,如何实现
一、需求一个朋友接到一个需求,从大数据平台收到一个数据写入在20亿+,需要快速地加载到MySQL中,供第二天业务展示使用。二、实现再分析对于单表20亿, 在MySQL运维,说真的这块目前涉及得比较少,也基本没什么经验,但对于InnoDB单表Insert 如果内存大于数据情况下,可以维持在10万-15万行写入。 但很多时间我们接受的项目还是数据超过内存的。 这里使用XeLabs TokuDB做...原创 2019-05-02 22:22:15 · 11220 阅读 · 0 评论 -
精选(14)MySQL主从不一致情形与解决方法
一、MySQL主从不同步情况1.1 网络的延迟由于mysql主从复制是基于binlog的一种异步复制 通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。1.2 主从两台机器的负载不一致由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线...原创 2019-05-03 10:07:04 · 10847 阅读 · 0 评论 -
史上最详细的一线大厂Mysql面试题
1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;从:sql执行线程——执行relay log中的语句;2、MySQL中myisam与innod...原创 2019-05-03 12:26:56 · 27976 阅读 · 0 评论 -
精选(15) 面试官:为什么Mysql innoDB是两段式提交?
Mysql的日志模块尤为重要,平日的crash-safe和主从都依赖我们的日志模块。Mysql innoDB日志Mysql innoDB有两个日志模块:redolog 和 binlog咱们先看一下redolog。redolog中文来讲就是重做日志,它有什么用呢?如果每次你的更新或者插入都写入磁盘的话那这个IO成本就比较大了,所以InnoDB就把记录先记录在redolog中,并同时更新到内存...原创 2019-05-03 21:22:30 · 18513 阅读 · 0 评论 -
精选(27) 一次诡异的线上数据库的死锁问题排查过程
背景情况我们使用的数据库是Mysql 5.7,引擎是InnoDB,事务隔离级别是READ-COMMITED。数据库版本查询方法:SELECT version();复制代码引擎查询方法:show create table fund_transfer_stream;复制代码建表语句中会显示存储引擎信息,形如:ENGINE=InnoDB事务隔离级别查询方法:select @@tx...原创 2019-05-03 22:31:14 · 10426 阅读 · 0 评论 -
精选(36) 常见的五种MySQL高可用方案分析
来源:https://juejin.im/post/5ca754be6fb9a05e267039a11. 概述我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面:如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致。当业...原创 2019-05-04 11:58:15 · 10907 阅读 · 0 评论 -
精选(39) 深入学习MySQL事务:ACID特性的实现原理
来源:https://juejin.im/user/5ba0b3b36fb9a05cd53af3dd事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。一,基础概念事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。...原创 2019-05-04 12:43:37 · 12905 阅读 · 0 评论 -
精选(42) 一条sql语句在mysql中是如何执行的
前言最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的。在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成已经这些组件的作用是什么,可以帮助我们理解和解决这些问题。一、mysql架构分析下面是my...原创 2019-05-04 13:53:54 · 12983 阅读 · 0 评论 -
mysql(11)Mysql性能调优工具Explain结合语句讲解
Explain简称执行计划,可以模拟SQL语句,来分析查询语句或者表结构是否有性能瓶颈。Explain的作用有哪些,可以看到哪些?可以看到表的读取顺序,数据读取操作的操作类型,哪些索引可以使用,哪些索引被实际应用,表之间的引用,每张表有多少行被优化器查询。准备工作DROP TABLE IF EXISTS `t1`;CREATE TABLE `t1` ( `id` int(10) un...原创 2019-05-04 22:25:02 · 19750 阅读 · 0 评论 -
MySQL 清除表空间碎片
碎片产生的原因(1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白、被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大;(2)当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;(3)当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是...原创 2019-05-01 21:39:44 · 14594 阅读 · 0 评论