3 kun_行者

尚未进行身份认证

我要认证

MySQL Oracle数据库学习者 个人博客: http://blog.51cto.com/10814168 欢迎关注个人公众号: MySQL技术

等级
TA的排名 5w+

InnoDB存储引擎简介

前言:存储引擎是数据库的核心,对于 MySQL 来说,存储引擎是以插件的形式运行的。虽然 MySQL 支持种类繁多的存储引擎,但最常用的当属 InnoDB 了,本篇文章将主要介绍 InnoDB 存储引擎相关知识。1. InnoDB 简介MySQL 5.5 版本以后,默认存储引擎就是 InnoDB 了。 InnoDB 是一种兼顾了高可靠性和高性能的通用存储引擎。在 MySQL 5.7 中,除非你配置了其他默认存储引擎,否则执行 CREATE TABLE 不指定 ENGINE 的语句将创建一个 InnoD

2020-08-07 10:43:24

我想和你聊聊

不知不觉『MySQL技术』公众号已经持续运营一年半了。想想自己能坚持笔辍不耕写了一年多,也挺不容易的,为自己点个赞。虽然本号发文章并不算高产,但几乎每周都会发原创技术文章,能坚持下来离不开各位读者的支持。本篇文章咱们不聊技术,我想和你聊聊自己的感受和收获,文笔不好,还请见谅。不要走开,文末有彩蛋!一、首先介绍下自己吧,笔者姓王,可以叫我王同学。目前在杭州工作,已入职场三年,也不是啥大佬,和诸多读者一样是IT从业者。细心的读者可能发现,本号是有「留言」功能的。哈哈,其实这个公众号是16年我在大学期间申请的

2020-07-31 14:11:36

MySQL主从复制详解

前言:在MySQL中,主从架构应该是最基础、最常用的一种架构了。后续的读写分离、多活高可用架构等大多都依赖于主从复制。主从复制也是我们学习MySQL过程中必不可少的一部分,关于主从复制的文章有很多,笔者也来凑凑热闹,写写这方面的内容吧,同时分享下自己的经验和方法。1.主从复制简介及原理主从复制(也称 AB 复制)是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器既可充当主机,也可充当从机。MySQL默认采用异步复制

2020-07-24 11:12:33

推荐一些学习MySQL的资源

前言:在日常工作与学习中,无论是开发、运维、还是测试,对于数据库的学习是不可避免的,同时也是日常工作的必备技术之一。在互联网公司,开源数据库用得比较多的当属MySQL了,相信各位小伙伴关注我的原因也是学习MySQL。学习MySQL的途径有很多,每个人的学习方法也各有不同,但最重要的还是要坚持,找到适合自己的学习方法。本篇文章我将推荐一些学习MySQL的资源,希望各位可以找到适合自己的并坚持学习。1.入门资源可能有些小伙伴还处于入门阶段,刚刚开始学习MySQL。对于这类同学,我的建议是按部就班一步步学习

2020-07-17 13:53:06

带你解析MySQL binlog

前言:我们都知道,binlog可以说是MySQL中比较重要的日志了,在日常学习及运维过程中,也经常会遇到。不清楚你对binlog了解多少呢?本篇文章将从binlog作用、binlog相关参数、解析binlog内容三个方面带你了解binlog。1.binlog简介binlog即binary log,二进制日志文件。它记录了数据库所有执行的DDL和DML语句(除了数据查询语句select、show等),以事件形式记录并保存在二进制文件中。binlog主要有两个应用场景,一是用于复制,master把它的二

2020-07-10 11:08:45

一文解决MySQL时区相关问题

前言:在使用MySQL的过程中,你可能会遇到时区相关问题,比如说时间显示错误、时区不是东八区、程序取得的时间和数据库存储的时间不一致等等问题。其实,这些问题都与数据库时区设置有关,本篇文章将从数据库参数入手,逐步介绍时区相关内容。1.log_timestamps参数介绍首先说明下log_timestamps参数并不影响时区,只是设置不同会影响某些日志记录的时间。该参数主要是控制 error log、slow log、genera log 日志文件中的显示时间,但不会影响 general log 和 s

2020-07-03 11:07:38

手把手教你看MySQL官方文档

前言:在学习和使用MySQL的过程中,难免会遇到各种问题。不知道当你遇到相关问题时会怎么做,我在工作或写文章的过程中,遇到不懂或需要求证的问题时通常会去查阅官方文档。慢慢的,阅读文档也有了一些经验,本篇文章将手把手教你阅读MySQL官方文档,希望可以给到各位一点小收获。1.初识官方文档如果你还没有仔细的看过MySQL官方文档,可以跟着我一步步体验下哦。首先打开参考文档首页,这里以5.7版本为例,首页地址:https://dev.mysql.com/doc/refman/5.7/en/首页左侧边是目

2020-06-23 11:21:28

MySQL关于日期为零值的处理

前言:前面文章我们介绍过日期和时间字段的查询方法,最近遇到日期值为零的问题。原来了解过和 sql_mode 参数设置有关,但还不是特别清楚,本篇文章将探究下MySQL怎么处理日期值为零的问题。1.问题描述这里我们说的日期为零值是指年、月、日为零,即’0000-00-00’。显然,这是不合法的日期值,但由于设计问题或历史遗留问题,有时候数据库中有类似日期值为零的数据,默认情况下插入零值日期会报错,可以通过修改参数sql_mode模式来避免该问题。下面展示下默认情况下插入零值的情况:# 首先创建测试表

2020-06-12 14:19:18

关于日期及时间字段的查询

前言:在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询。关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法。1.日期和时间类型概览MySQL支持的日期和时间类型有 DATETIME、TIMESTAMP、DATE、TIME、YEAR,几种类型比较如下:涉及到日期和时间字段类型选择时,根据存储需求选择合适的类型即可。2.日期和时间相关函数处理日期和时间字段的函数有很多,有的经常会在查询中使用到,下面介绍下几个相关函数的使用方法。

2020-06-05 16:02:21

是时候学习Linux了

前言:Linux是一个开源、免费的操作系统。其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上。如果你还不太了解Linux,希望本篇文章能够带你入门Linux。1.Linux介绍及与Windows区别与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件。与 Windows 不同之处在于,Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件。Linux 在设计之初,就是基于 Intel x86 系

2020-06-02 14:25:25

MySQL分区表最佳实践

前言:分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表。但是对于应用程序来讲,分区的表和没有分区的表是一样的。换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理。本篇文章给大家带来的内容是关于MySQL中分区表的介绍及使用场景,有需要的朋友可以参考一下,希望对你有所帮助。1.分区的目的及分区类型MySQL在创建表的时候可以通过使用PARTITION BY子句定义每个分区存放的数据。在执行查询的时候,优化器根据分区定义过滤那些没有我们需要的数据的分区,这样查询就可以

2020-05-29 11:28:14

MySQL5.7升级到8.0过程详解

前言:不知不觉,MySQL8.0已经发布好多个GA小版本了。目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了。本篇文章主要介绍从5.7升级到8.0版本的过程及注意事项,有想做版本升级的小伙伴可以参考下。1.升级前准备及注意事项首先,我们要大概了解下MySQL5.7和8.0有哪些不同,参考官方文档和其他网友文章,概括总结出MySQL8.0以下几点新特性:默认字符集由latin1变为utf8mb4。MyISAM系统表全部换成Inn

2020-05-22 11:05:13

MySQL索引知识介绍

前言:索引是MySQL数据库中的重要对象之一,索引的目的在于提高查询效率。可以类比字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同。为了避免混乱,本文将只关注于InnoDB引擎下的B+Tree索引。1.索引结构及原理要想了解索引的原理,首先要知道索引的结构,下面简单介绍下B+Tree索引的结构。首先我们要知道索引

2020-05-15 14:00:08

MySQL库表设计小技巧

前言:在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名、字段名命名混乱、字段类型设计混乱等等,此类数据库后续极难维护与拓展。我一直相信只有优秀的库表设计才能发挥出MySQL最大的性能,前面有篇文章也分享了数据库的使用规范,本篇文章主要讲几个库表设计的小技巧,希望对大家有所启发。1.int类型的选用整型字段类型包含 tinyint、smallint...

2020-05-08 11:04:06

MySQL如何快速插入数据

前言:日常学习和工作中,经常会遇到导数据的需求。比如数据迁移、数据恢复、新建从库等,这些操作可能都会涉及大量数据的导入。有时候导入进度慢,电脑风扇狂转真的很让人崩溃,其实有些小技巧是可以让导入更快速的,本篇文章笔者会谈一谈如何快速的导入数据。注:本篇文章只讨论如何快速导入由逻辑备份产生的SQL脚本,其他文件形式暂不讨论。1.尽量减小导入文件大小首先给个建议,导出导入数据尽量使用MySQ...

2020-04-24 15:25:13

教你用SQL实现统计排名

前言:在某些应用场景中,我们经常会遇到一些排名的问题,比如按成绩或年龄排名。排名也有多种排名方式,如直接排名、分组排名,排名有间隔或排名无间隔等等,这篇文章将总结几种MySQL中常见的排名问题。创建测试表create table scores_tb ( id int auto_increment primary key, xuehao int not null, score int...

2020-04-17 14:48:13

巧用SQL拼接语句

前言:在日常数据库运维过程中,可能经常会用到各种拼接语句,巧用拼接SQL可以让我们的工作方便很多,达到事半功倍的效果。本篇文章将会分享几个日常会用到的SQL拼接案例,类似的SQL还可以举一反三,探索出更多的可能性哦。注意:适用于5.7版本,其他版本可能稍许不同。1.CONCAT函数介绍授人以鱼不如授人以渔,拼接SQL主要用到的是CONCAT函数,我们先来介绍下该函数的用法。CONCA...

2020-04-10 15:53:10

Truncate用法详解

前言:当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足需求,而不去想这类语句的使用场景及注意事项。本篇文章主要介绍truncate语句的使用方法及注意事项。1.truncate使用语法truncate的作用是清空表或者说是截断表,只能作用于表。truncate的语法很简单,后面直接跟表名即可,例如: truncate table tbl_name ...

2020-04-03 14:04:00

utf8字符集下的比较规则

前言:在MySQL中,比较常用的字符集是utf8和utf8mb4。这两个字符集是类似的,utf8是utf8mb3的别名,所以之后在MySQL中提到utf8就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,需要使用utf8mb4。其实每个字符集下对应着若干个比较规则(也可以翻译为排序规则或校对规则,英文是COLLATE),同一字符集下,...

2020-03-27 14:12:19

关于Aborted connection告警日志的分析

前言:有时候,连接MySQL的会话经常会异常退出,错误日志里会看到"Got an error reading communication packets"类型的告警。本篇文章我们一起来讨论下该错误可能的原因以及如何来规避。1.状态变量Aborted_clients和Aborted_connects首先我们来了解下Aborted_clients和Aborted_conne...

2020-03-20 11:38:31

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。