mysql高级技术
mysql的一些高级应用
昔拉天使
I wanna the world know my existence.
展开
-
MySQL索引优化(如何避免索引失效)
索引优化索引失效(应该避免)全值匹配我最爱:最佳左前缀法则:如果索引了多列,要遵守最左前缀法则,指的是查询从索引的最左前列开始并且不跳过索引中的列。(带头大哥不能死,中间兄弟不能断)...原创 2020-02-06 01:21:11 · 595 阅读 · 0 评论 -
MySQL主从复制
复制的基本原理slave会从master读取binlog来进行数据同步三步骤+原理图:master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log eventsslave将master的binary log events拷贝到它的中继日志(relay log)slave重做中继日志中的事件,将改变应用到自己的数据库中。MYSQL复制是...原创 2020-02-07 05:28:33 · 158 阅读 · 0 评论 -
MySQL行锁解析(MySql锁机制)
行锁(偏写)特点:偏向InnoDB存储引擎,开锁大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。事务(行锁支持事务)事务及其ACID属性并发事务处理带来的问题:更新丢失脏读不可重复读幻读事务隔离级别:(MYSQL默认可重复读)案例分析:...原创 2020-02-07 03:57:54 · 554 阅读 · 0 评论 -
MySQL表锁解析(MySql锁机制)
表锁(偏读)特点:偏向MyISAM存储引擎,开锁小,加锁快;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。建表SQL:加读锁:加写锁:案例结论:表锁分析:...原创 2020-02-06 23:07:04 · 133 阅读 · 0 评论 -
MySQL数据库锁理论概述(MySql锁机制)
定义:生活购物:锁的分类:从对数据操作的类型(读/写)分:读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。写锁(排它锁):当前操作没有完成前,它会阻断其他写锁和读锁。从对数据操作的粒度分:表锁、行锁...原创 2020-02-06 21:53:33 · 277 阅读 · 0 评论 -
MySQL全局查询日志
作用:与profile类似将执行过的sql语句放入一张表中可以收集什么时间段发生了什么SQL帮助定位问题(推荐还是用profile)配置启用:编码启用:永远不要在生产环境开启这个功能。...原创 2020-02-06 19:36:20 · 386 阅读 · 0 评论 -
MySQL用Show Profile进行sql分析
Show Profile是什么:是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量官网:http://dev.mysql.com/doc/refman/5.5/en/show-profile.html默认情况下,参数处于关闭状态,并保存最近15次的运行结果分析步骤:1、是否支持,看看当前的mysql版本是否支持2、开启功能,默认是关闭,使用前需要...原创 2020-02-06 19:24:47 · 253 阅读 · 0 评论 -
MySQL批量插入数据脚本
函数和存储过程:用sql脚本语言所写的数据库编程,函数有返回值,存储过程无返回值往表里插入1000W数据:1、建表2、设置参数log_bin_trust_function_creators3、创建函数,保证每条数据都不同(DELIMITER 表示定义mysql语句以表示定义mysql语句以表示定义mysql语句以为结束符)随机产生字符串随机产生部门编号4、创建存储过程:创...原创 2020-02-06 17:54:53 · 3748 阅读 · 2 评论 -
MySQL慢查询日志
是什么?怎么使用:说明:查看是否开启及如何开启:默认show variables like ‘%slow_query_log%’;开启:set global slow_query_log = 1;那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢?case:查看当前多少秒算慢:show variables like ‘long_query_time%’...原创 2020-02-06 16:06:01 · 276 阅读 · 0 评论 -
MySQL查询优化
1、小表驱动大表(类似于嵌套循环Nested Loop):MySQL in和exists:以下用in和exists等价,但可以视情况选择用哪一种效率更高2、MySQL OrderBy优化ORDER BY子句,尽量使用index方式排序,避免使用filesort方式排序建表SQL:case(order by顺序与索引顺序尽量一致就是用index方式进行排序):mysql支持...原创 2020-02-06 05:52:53 · 207 阅读 · 0 评论 -
MySQL查询性能分析
分析:观察,至少跑一天,看看生产的慢SQL情况。开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来。explain+慢SQL分析show profile运维经理 or DBA,进行SQL数据库服务器的参数调优。总结:慢查询的开启并捕获explain+慢SQL分析show profile查询SQL在MYSQL服务器里面的执行细节和生命周期情况SQL数据库...原创 2020-02-06 04:21:25 · 526 阅读 · 0 评论 -
MySQL索引使用情况分析
题目SQL:定值、范围还是排序,一般order by是给个范围以下例子C3作用于排序而不是查找,所以用到两个索引字段查找排序顺序最好与建的索引一致,否则可能会出现using filesort,因为第三层顺序mysql并不知道只能用自身文件排序以下例子c2,c3用于排序无filesort,换成c3,c2就有filesort了,order by顺序不能乱用c1,c2两个字段索引...原创 2020-02-06 03:27:37 · 690 阅读 · 0 评论 -
MySQL索引两表与三表优化案例
建表SQL:案例:未建索引explain结果:只有card字段关联可以先左右表任选一个card字段建立普通索引尝试,加在右表book上的结果优化明显:加在左表class上的结果无太大优化:对于右连接来说左表class一定要建索引,在右表book上建索引无太大影响...原创 2020-02-05 17:45:59 · 180 阅读 · 0 评论 -
MySQL索引单表优化案例
建表SQL:查询category_id为1且comments大于1的情况下,views最多的article_id,第一次explain结果:建三个字段索引结果:因为第二个索引是个范围并不能精确定位如果需要修改索引建两个字段索引结果:...原创 2020-02-05 16:05:18 · 192 阅读 · 0 评论 -
MySQLexplain之Extra介绍
Extra:包含不适合在其他列中显示但十分重要的额外信息Using filesortUsing temporaryUsing indexUsing whereUsing join bufferimpossible whereselect tables optimized awaydistinct...原创 2020-02-05 06:16:18 · 5426 阅读 · 1 评论 -
MySQLexplain之ref和rows介绍
ref:表之间的引用显示索引的哪一列被使用了,如果可能的话,是一个常数。哪些列或常量被用于查找索引列上的值rows:每张表有多少行被优化器查询根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数...原创 2020-02-05 03:30:01 · 3202 阅读 · 2 评论 -
MySQLexplain之possible_keys、key及key_len介绍
possible_keys:显示可能应用在这张表中的索引,一个或多个。查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用key:实际使用的索引。如果为NULL,则没有使用索引查询中若使用了覆盖索引,则该索引和查询的selet字段重叠,仅出现在key列表中。覆盖索引:查询的字段与所建索引的字段个数和顺序刚好吻合...原创 2020-02-05 00:41:03 · 19297 阅读 · 1 评论 -
MySQLexplain之type介绍
type表示查询的范围:显示查询使用了何种查询范围,主要有以下几种,从最好到最坏依次是:system > const > eq_ref >ref > range > index > ALLsystem:表只有一行记录(等于系统表),这是const类型的特例,平时不会出现,这个也可以忽略不计const:表示通过索引一次就找到了,const用于比较pr...原创 2020-02-04 21:42:00 · 1497 阅读 · 0 评论 -
MySQLexplain之select_type介绍
select_type:数据读取操作的操作类型、查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询主要有以下几类:SIMPLE:简单的select查询,查询中不包含子查询或者UNIONPRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为SUBQUERY:在SELECT或WHERE列表中包含了子查询DERIVED:在FROM列表中包含的子查询被...原创 2020-02-04 19:52:26 · 6972 阅读 · 0 评论 -
MySQLexplain之id介绍
explain之id介绍三种情况:id相同,执行顺序由上至下(表示mysql内部优化器执行主人命令是顺序的)id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行id相同不同,同时存在...原创 2020-02-04 18:53:22 · 1442 阅读 · 0 评论 -
MySQLexplain使用简介
explain:查看执行计划,使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MYSQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。官网介绍:http://dev.mysql.com/doc/refman/5.5/en/explain-output.htmlexplain作用:表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际...原创 2020-02-04 18:22:00 · 352 阅读 · 0 评论 -
MySQL默认自带的优化器及常见瓶颈
MySql Query Optimizer:MYSQL默认自带的优化器mysql常见瓶颈:CPU:CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候IO:磁盘I/O瓶颈发生在装入数据远大于内存容量的时候服务器硬件的性能瓶颈:top,free,iostat和vmstat来查看系统的性能状态...原创 2020-02-04 17:10:57 · 489 阅读 · 0 评论 -
MySQL适合与不适合建索引的情况
适合建索引情况:主键自动建立唯一索引频繁作为查询条件的字段应该创建索引查询中与其它表关联的字段,外键关系建立索引Where条件里用不到的字段不创建索引单键/组合索引的选择问题,(在高并发下倾向创建组合索引)查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度查询中统计或者分组字段不适合建索引情况:表记录太少经常增删改的表(提高了查询速度,同时却会降低更新表的速度,...原创 2020-02-04 15:57:58 · 2927 阅读 · 0 评论 -
MySQL索引结构与BTree检索原理
MySQL索引结构:BTree索引检索原理:Hash索引full-text全文索引R-Tree索引原创 2020-02-04 08:59:14 · 375 阅读 · 0 评论 -
MySQL索引分类和建索引命令语句
MySQL索引分类主要有单值索引和复合索引两种,具体可分成如下:1.普通索引:这是最基本的索引,它没有任何限制,单列允许重复2.主键索引:它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引3. 唯一索引:与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似4.复合索引:即...原创 2020-02-04 07:07:55 · 495 阅读 · 0 评论 -
MySQL索引优势劣势
优势:类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗劣势:实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MYSQL不仅要保存数据,...原创 2020-02-04 06:07:32 · 289 阅读 · 0 评论 -
MySQL索引简介
MySQL索引是什么?mysql官方对索引的定义为:索引(INDEX)是帮助mysql高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。可以简单理解为“排好序的快速查找数据结构”详解(重要):有的时候当某条数据不需要时会将该数据active状态改成非激活状态只是逻辑上进行删除并未真正从物理上删除主要是为了数据分析和索引update慢是因为数据在改,索引也在改,所以频繁删除...原创 2020-02-04 05:19:51 · 270 阅读 · 0 评论 -
SQL七种JOIN解析
1原创 2020-02-04 03:50:33 · 1526 阅读 · 1 评论 -
MYSQL执行加载顺序
手写顺序:机读顺序:总结:原创 2020-02-03 23:49:31 · 282 阅读 · 0 评论 -
MYSQL性能下降原因
mysql性能下降慢(执行时间长、等待时间长)主要有以下几个原因:1、查询语句写的烂(索引用不上或根本没建索引)2、索引失效(前提:建了没用上;分类:单值和复合)建了索引之后就会对字段进行排序,能提高查询效率3、关联查询太多join(设计缺陷或不得已的需求)4、服务器调优及各个参数设置(缓冲、线程数等)...原创 2020-02-03 22:02:05 · 671 阅读 · 0 评论 -
Mysql存储引擎简介
用命令查看:看你的mysql现在已提供什么存储引擎:show engines;看你的mysql当前默认的存储引擎:show variables like ‘%storage_engine%’;MyISAM和InnoDB对比:阿里巴巴、淘宝使用的数据库:...原创 2020-02-03 18:10:03 · 186 阅读 · 0 评论 -
MySQL逻辑架构简介
和其他数据库相比,mysql有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。以下是官方mysql四层架构图:第一层:连接层最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于...原创 2020-02-03 05:06:12 · 1885 阅读 · 1 评论 -
Mysql在linux下的基本操作及文件结构
mysql在linux系统下有两种安装方式:二进制原码安装和rpm安装RPM安装mysql:检查当前系统是否安装过mysql:rpm -qa|grep -i mysql 删除命令:rpm -e RPM软件包名(该名字是上一个命令查出来的名字)安装mysql服务端、客户端:rpm -ivh 安装包名运行相关:查看mysql安装情况:mysqladmin查看mysql进程服务开启情况...原创 2020-02-03 09:21:31 · 521 阅读 · 0 评论