mysql
侯亚磊
改变世界 是每一个程序猿的梦想!
展开
-
基于Docker的Mysql主从复制搭建
为什么基于Docker搭建?资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别利用Docker搭建主从服务器首先拉取docker镜像,我们这里使用5.7版本的mysql:docker pull mysql:5.7然后使用此镜...转载 2019-12-30 17:53:53 · 196 阅读 · 0 评论 -
MySQL(二)|深入理解MySQL的四种隔离级别及加锁实现原理
一、首先什么是事务?事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所有步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消事务开始时的所有操作。二、事务的ACID事务具有四个特征:原子性( Atomicity...转载 2019-01-28 09:32:31 · 764 阅读 · 0 评论 -
MySQL(三)|《千万级大数据查询优化》第一篇:创建高性能的索引
MySQL优化一般是需要索引优化、查询优化、库表结构优化三驾马车齐头并进。可以说,索引优化是对查询性能优化最有效的手段,索引能够轻易将查询性能提高几个数量级,“最优”的索引有时比一个“好的”索引性能要好几个数量级。创建一个真正“最优”的索引经常需要重写查询,所以索引优化和查询优化的关系很紧密。本文是《千万级大数据查询优化》系列第一篇:创建高性能的索引。我们先从一个面试题开始。面试题:...转载 2019-01-28 09:33:30 · 238 阅读 · 0 评论 -
MySQL(四)|《千万级大数据查询优化》第一篇:创建高性能的索引(补充)
本文是MySQL(三)|《千万级大数据查询优化》第一篇:创建高性能的索引的一个补充。主要包括如下几点:关于sex列创建索引的处理 sex可以理解为那种选择性不高,但是可能很多查询都会用到的列。考虑到使用的频率,还是建议在创建不同组合索引的时候将它作为前缀。 但是根据经验法则(将选择性最高的列放到索引最前列)不是说不应该在选择性低的列上创建索引吗?那为什么这里要将sex列字段作为索引的前缀...转载 2019-01-28 09:34:09 · 229 阅读 · 0 评论 -
MySQL(五)|《千万级大数据查询优化》第二篇:查询性能优化(1)
MySQL优化一般是需要索引优化、查询优化、库表结构优化三驾马车齐头并进。本章节开始讲查询优化。一、为什么查询速度会慢可以把查询当作一个任务,它由一系列子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上是优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行得更快。MySQL在执行查询的时候有哪些子任务,这个是有一定的方法进行剖析的,具体方法下回...转载 2019-01-28 09:34:55 · 246 阅读 · 0 评论 -
MySQL(六)|《千万级大数据查询优化》第二篇:查询性能优化(2)
在上一篇文章MySQL(五)|《千万级大数据查询优化》第二篇:查询性能优化(1)中讲到一条SQL的查询执行路径如下图5-1所示:图5-1 步骤如下:客户端发送一条查询给服务器。 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进行下一阶段。 服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划。 MySQL根据优化器生成的执行计划,调用存储...转载 2019-01-28 09:35:27 · 253 阅读 · 0 评论 -
MySQL(七)|MySQL分库分表的那点事(小怪的Java群第一次话题讨论)
一、何谓分库分表?把原本存储于一个库的数据分块存储到多个库(主机)上,把原本存储于一个表的数据分块存储到多个表上。二、为什么要分库分表?数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大。另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等...转载 2019-01-28 09:36:08 · 174 阅读 · 0 评论 -
MySQL(七)|MySQL中In与Exists的区别(1)
最近被一条SQL语句弄的有点兴奋,具体情况是这样的...我这边有两个表需要关联查询,表的情况如下:# 2759174行数据SELECT COUNT(*) FROM tb_data t1;# 7262行数据SELECT COUNT(*) FROM tb_task t2;# 执行时间为44.88sSELECT SQL_NO_CACHE t1.id FROM tb_data t1 ...转载 2019-01-28 09:36:54 · 380 阅读 · 0 评论 -
MySQL(八)|MySQL中In与Exists的区别(2)
关于In与Exists的比较,先说结论,归纳出IN 和Exists的适用场景:1)IN查询在内部表和外部表上都可以使用到索引。2)Exists查询仅在内部表上可以使用到索引。3)当子查询结果集很大,而外部表较小的时候,Exists的Block Nested Loop(Block 嵌套循环)的作用开始显现,并弥补外部表无法用到索引的缺陷,查询效率会优于IN。4)当子查询结果集较小,而外部...转载 2019-01-28 09:37:31 · 222 阅读 · 0 评论 -
navicat 官方使用手册,中文版,快捷键大全
2017年1月23日09:52:51这个官方中文文档很详细https://www.navicat.com.cn/manual/online_manual/cn/navicat/win_manual/index.htmlhttps://community.navicat.com/videos/cn官方中文论坛部分视频教程快捷键Navicat 主窗口 键...原创 2019-03-29 18:24:37 · 665 阅读 · 0 评论 -
MySQL(一)|性能分析方法、SQL性能优化和MySQL内部配置优化
我曾经在公司处理过很多次Mysql性能上的问题,利用一些Linux常用的命令来查看Mysql对服务器的CUP和I/O使用情况,通过慢查询日志找出有待优化的sql,通过show processlist查看正在执行的sql的情况以及及时kill死锁的sql,通过EXPLAIN分析需要优化的sql语句。当然也对Mysql内部配置做了一些调整。最近也在看《高性能MySQL》这本Mysql的经典书籍,...转载 2019-01-28 09:31:43 · 291 阅读 · 0 评论 -
MySQL使用可重复读作为默认隔离级别的原因
一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQL Server等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为SERIALIZABLE > RR > RC > Read-Uncommite...转载 2018-11-23 09:59:41 · 150 阅读 · 0 评论 -
MySQL详解----------运算符
(1)强制运算()括号。使用它们来强制在一个表达式的计算顺序。mysql> select1+2*3; -> 7mysql> select(1+2)*3; -> 9(2)算术运算+ 加法mysql> select3+5; -> 8以此类推:- 减法* 乘法/ 除法被零除产生一个NULL结果:原创 2017-10-26 14:44:03 · 306 阅读 · 0 评论 -
Navicat for MySQL通过ssh桥接连接远程数据库
1、连接 linux平台ssh,设置服务器的账户和密码2、输入远程主机数据库的账号密码上面配置好后,点击左下角的连接测试检测是否成功原创 2017-10-24 17:20:17 · 1522 阅读 · 0 评论 -
图解 Navicat for MySQL 快捷键
Navicat 主窗口,快捷键如下图所示:常规,快捷键如下图所示:表设计器,快捷键如下图所示:表查看器,快捷键如下图所示:视图查看器,快捷键如下图所示:视图或查询,快捷键如下图所示:SQL 编辑器,快捷键如下图所示:原创 2017-10-25 13:55:05 · 216 阅读 · 0 评论 -
mysql客户端navicat安装详解 图解
双击.exe安装程序进行安装,类似其他软件一样,选择一个存储空间位置,一路下一步执行。选择是否添加到快速启动栏以及桌面快捷方式。如果安装的时候没有选择桌面快捷方式,还可以通过对文件右键发送到桌面快捷方式处理。安装完成后启动navicat for mysql软件。打开navicat软件就可以进行连接数据库测试。点击软原创 2017-10-25 13:56:42 · 1304 阅读 · 0 评论 -
PHP多进程模拟多客户端并发访问远程mysql数据库进行网络压力测试
因为一台服务器(Server A)被IDC无故断电产生了文件根目录不能写的情况,所以需要切换在这台服务器上跑着的数据和业务到另一台(Server B)上,才能停掉在A上的业务进行维修,在数据迁移之前,需要对B上的数据库做一个压力测试,看看能否同时兼顾现有和附加的数据库的吞吐。 参考了张宴的《PHP多进程并发控制的测试用例》一文,帮助良多,这里记录一下。 大致思路是:规定一个最大进程原创 2017-10-25 14:29:35 · 1685 阅读 · 0 评论 -
mysql 中 unix_timestamp和from_unixtime 时间戳函数
1.unix_timestamp将时间转化为时间戳。(date 类型数据转换成 timestamp 形式整数)没传时间参数则取当前时间的时间戳mysql> select unix_timestamp();+------------------+| unix_timestamp() |+------------------+| 1361586358 |+-原创 2017-11-02 16:47:41 · 1776 阅读 · 0 评论 -
mysql 索引总结
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;MYISAM和InnoDB存储引擎只支持BT原创 2017-10-26 14:41:18 · 153 阅读 · 0 评论 -
MySQL详解----------数据类型
数据类型注:以下内容针对MySQL5.0及以上版本MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上《高性能MySQL》一书上的内容整理而成的。三大原则: 1,更小的通常更好,应该尽量使用可以正确存储数据的最小数据类型。 2,简单就好,简单数据类型的操作通常需要更少的CPU周期。 3,尽量避免NUL原创 2017-10-26 14:42:13 · 154 阅读 · 0 评论 -
MySQL详解----------存储引擎
存储引擎是什么?MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持原创 2017-10-26 14:43:03 · 164 阅读 · 0 评论 -
MySQL数据类型和常用字段属性总结
前言好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键。M前言好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键。MySQL提供了一组可以赋给表中各个列的数据类型,每个类型都强制数原创 2017-10-27 16:14:49 · 120 阅读 · 0 评论