mysql
小木兮子
出来混,迟早是要还的!
展开
-
docker mysql 部署
拉取镜像 ( 指定版本 5.7.35 )docker pull mysql:5.7 运行 mysql 容器docker run -d --name mysql-dev -v mysql:/data/mysql -p 33066:3306 -e MYSQL_ROOT_PASSWORD=zhang33060 mysql:5.7.35参数详解:-d 后台运行-v 指定volume 挂载-p 端口映射 容器内部 3306 端口映射到本地 33060 端口-e 设置环境变量 MYSQ.原创 2021-07-22 12:38:29 · 334 阅读 · 1 评论 -
mysql 索引的使用
这里主要内容有如下:索引的使用场景 索引的使用原则 1.索引的使用场景 在索引基础篇(https://blog.csdn.net/zhang_referee/article/details/83045903)说过,索引能极大加快访问速度,这里说下索引的主要使用场景。 首先看一下,案例表索引情况: mysql> show index from...原创 2018-10-21 01:07:32 · 340 阅读 · 0 评论 -
mysql 索引的使用之中文全文索引
这里讨论的是 mysql 5.7 InnoDB 全文索引,在mysql 5.6 之前的版本中,myisam 支持全文索引而InnoDB 是不支持的,而且 mysql 全文索引对中文的支持也不太友好,所以一般采用其它方案去替代。一般的替代方案是 sphinx 或者 elasticSearch 。 在mysql 索引使用篇(https://blog.csdn.net/zhang_referee...原创 2018-10-21 22:30:05 · 3416 阅读 · 0 评论 -
mysql 慢查询日志
有时候在测试环境中开发,并不一定能在开发阶段解决现有问题,比如由于数据量不对称,撸的代码在测试环境跑的好好的,但在现网环境超时或相应很慢,这时就需要揪出来是哪块出了问题,哪条sql 执行过慢了。这时就需要在mysql 服务端设置一个时间阈值,超过该阈值就判定是慢查询,并优化之。查看慢查询日志是否开启:mysql> show variables like '%slow%';+---...原创 2018-11-04 10:28:51 · 204 阅读 · 0 评论 -
mysql 多列索引
1 索引类型 1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上, 各引擎稍有不同,比如,严格的说,NDB引擎,使用的是T-tree, Myisam,innodb中,默认用B-tree索引 但抽象一下---B-tree系统,可理解为”排好序的快速查找结构”. 1.2 hash索引 ...原创 2019-02-16 22:07:24 · 1039 阅读 · 0 评论 -
mysql 索引长度与区分度的选择
理想的索引查询频繁 区分度高 长度小 尽量能覆盖常用查询字段索引长度直接影响索引文件的大小,影响增删改的速度,并间接影响查询速度(占用内存多).针对列中的值,从左往右截取部分,来建索引1: 截的越短, 重复度越高,区分度越小, 索引效果越不好2: 截的越长, 重复度越低,区分度越高, 索引效果越好,但带来的影响也越大--增删改变慢,并间影响查询速度.所以, 我们要...原创 2019-02-17 23:14:19 · 2605 阅读 · 0 评论 -
centos 7 yum安装mysql5.7
centos7 yum安装mysql5.7背景:在服务器上使用(两台相同配置服务器上搭建的 lnmp 集成环境 )搭建mysql 主从环境的出意外后,决定从安装mysql 重新跑一遍。然后先在虚拟机上源码安装mysql5.7,没想到安装没问题,配置倒是一堆问题,好吧,退而求其次,yum 安装吧,没想到也是一路坎坷。环境在开始前,先说下环境:CentOS-7-x86_64-Minimal-18...原创 2019-02-24 18:30:37 · 348 阅读 · 0 评论 -
centos7 mysql5.7 基于日志点复制
mysql 5.7 主从复制分为基于日志点的复制和GTID 的复制,GTID 是从MySQL 5.6 开始支持的的一种新的复制方式。这里主要说下基于日志点的复制方式。基于日志点复制本身配置很简单,但因为环境不同可能躺过的坑也就不同,这里打算以centos7 虚拟机为例说下主要配置[在正式的服务器上配置会比在虚拟机上容易点,感觉虚拟机坑多一点]。centos7 虚拟机下 Mysql5.7 的主从复...原创 2019-02-25 00:19:11 · 276 阅读 · 0 评论 -
centos7 源码编译安装 mysql5.7
以前最烦就是源码编译安装mysql5.7 ,原因无它 — 很麻烦,但最近因学习需要避免不了,主要介绍在centos7 下源码编译安装mysql5.7 。环境 : MiniCentos7 ( 下载地址:https://www.centos.org/download/ )安装安装依赖包yum install -y gcc gcc-c++ cmake ncurses ncurses-devel...原创 2019-03-06 07:37:09 · 63839 阅读 · 0 评论 -
mysql 表设计陷阱
虽然有一些普遍的好或坏的设计原则,但也有一些问题是由 MYSQL的实现机制导致的,这意味着有可能犯一些只在 MYSQL下发生的特定错误。 1.太多的列 MYSQL的存储引擎API工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列。从行缓冲中将编码过的列转换成行数据结构的操作代价是非常高的。 MYISAM的定...原创 2018-09-29 14:46:08 · 528 阅读 · 0 评论 -
mysql 索引之索引基础
mysql 索引在 mysql 优化中来说是非常重要的一个环节 。索引本质上不难,但要构建高效的索引却又不是那么容易的。在这里打算分三个环节来描述下索引:索引基础 索引的使用 索引优化其中索引基础,就是这篇文章要说的问题,第二部分索引的使用包括前缀索引,全文索引等内容,第三部分想要说的是索引的优化,这里提下全文索引,一起使用全文索引的时候基本上是myql 结合 sphinx 或者 el...原创 2018-10-20 15:57:26 · 715 阅读 · 0 评论 -
mysql数据类型详解
MySQL 数据类型MySQL数据类型(列类型)可归纳为数值型、时间日期型和字符型号。1.数值型 1.1整数型tinyint(1), smallint(2), mediumint(3),int(4), bigint(8)。括号中表示该类型所占空间的长度(字节数)取值范围 如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属原创 2018-01-07 23:56:14 · 5844 阅读 · 0 评论 -
mysql 表连接详解
mysql 表连接连接包括交叉连接,内连接,外链接。其中,外连接分为左外连接,右外连接,全外连接。1.交叉连接是指不设定任何条件的连接结果,通常也叫做”笛卡尔积”。语法:from table1 join table 2;下面建表,举例子解释说明。#员工表create table emp(empid smallint auto_increment,empName varchar(12) not原创 2018-02-05 16:23:18 · 2742 阅读 · 0 评论 -
mysql 常用函数
说明:这里的常用函数,是指 《高性能mysql 第三版》 中常出现的函数及我本人在工作中经常使用到的一些函数,关于《高性能mysql 第三版》这本书,我是强烈推荐去读一下的,这里提供网盘下载地址:https://pan.baidu.com/s/1haFdY7c9xb6VNtlfPUaidQ 。1. 字符串函数left()mysql left() 函数返回字符从左边开始计算指定的长度,...原创 2018-10-12 00:26:32 · 622 阅读 · 1 评论 -
mysql group_concat 函数,获取组内相关列非空字符串
啰嗦下,之所以在这里提到这个函数,是有在项目中按照某个字段分组后,想要获取该组下其它相关的字段的值的需求,当时在想,我在数据库中按照某个字段分组后,其它非分组字段的值就不准确了,然鹅我想获取改组下某个具体字段的值,想了下,大脑中全是些很麻烦的实现方案,后来跟大佬把问题背景一题,大佬想了几分钟给了我一个函数,那就是group_concat。 1.group_concat 获取组内非NUL...原创 2018-09-20 23:46:10 · 5579 阅读 · 0 评论 -
mysql 聚簇索引与非聚簇索引
聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。 当表有聚族索引时,它的数据行实际上存放在索引的叶子页( leaf page)中。术语 "聚簇" 表示数据行和相邻的键值紧凑地存储在一起。因为无法同时把数据行存放在两个不同的地方,所以一个表只能有一个聚族索引。...原创 2018-10-03 15:13:38 · 447 阅读 · 0 评论 -
mysql 优化系列之字段类型选取
mysql 优化是一个很有意思的话题,可以从很多方面来说,大到服务器集群,应用体系架构等,小到字段类型选择,存储引擎的选择等,随着mysql的发展,到目前(最新版本是8.0,笔者5.7)Innodb 已是默认的存储引擎(mysql 5.5 已将InnoDB作为默认存储引擎),所以尽量选择使用InnoDB 作为默认的存储引擎,如果想要使用myisam 存储引擎的全文索引特性 ,建议使用InnoDB...原创 2018-09-27 18:03:52 · 626 阅读 · 0 评论 -
MySql 转换表的引擎
有很多中方法可以将表的存储引擎转换成另外一种引擎。我们在这只讲述其中的三种方法:ALTER TABLE将表从一个引擎修改为另一个引擎最简单的办法是使用 ALTER TABLE语句。下面的语句将 mytable的引擎修改为 INNODB:mysql> ALTER TABLE mytable ENGINE INNODB;上述语法可以适用任何存储引擎。但有一个问题:需要执行很长时间...原创 2018-09-22 16:10:58 · 456 阅读 · 0 评论 -
mysql explain 详解
EXPLAIN语句提供有关MySQL如何执行语句的信息。 EXPLAIN 可以用在 SELECT, DELETE, INSERT, REPLACE,和 UPDATE语句中,对于SELECT 语句,可以帮助我们写出更优的sql 。注: 在mysql 5.6 前的版本中,explain 只支持 SELECT 语句。下面从一个具体的栗子,开始 mysql explain 的详解。...原创 2018-10-13 22:47:20 · 671 阅读 · 0 评论 -
mysql 触发器
1. 触发器 今天要讨论的东西是触发器,这个东西怎么说呢,工作中用的比较少(至少我个人是这样认为的),但在招聘面试中却常被问答!为什么在生产环境中用的比较少呢?因为使用触发器会对mysql性能有影响,再者就是业务逻辑写到数据库,虽然写的代码少了,但是不好调试,也不好控制,维护和升级很蛋疼!好了言归正传,下面详细讨论下触发器! 先看下官方对触发器的解释:MySQL包原创 2018-01-21 09:55:56 · 2487 阅读 · 0 评论