一、什么是主从复制:主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。二、主从复制的作用(好处,或者说为什么要做主从)重点!:1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台
在小伙伴们开发的项目中,对于MySQL排查问题找出性能瓶颈来说,最容易发现并解决的问题就是MYSQL的慢查询以及没有用索引的查询。日志就跟人们写的日记一样,记录着过往的事情。但是人的日记是主观的(记自己想记的内容),而数据库的日志是客观的,根据记录内容分为以下好几种日志:a、错误日志:记录启动、运行或停止mysqld时出现的问题。b、通用日志:记录建立的客户端连接和执行的语句。c、更新日志:记录更改数据的语句。该日志在MySQL5.1中已不再使用。d、二进制日志:记录所有更改数据的语句。还用于复制。e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询
上一篇我们讲了关于视图应用与优化,本篇我们讲解内存优化。本篇短小精悍,通俗易懂。注意:以下都是在MySQL目录下的my.ini文件中改写。一、InnoDB内存优化InnoDB用一块内存区域做I/O缓存池,该缓存池不仅用来缓存InnoDB的索引块,而且也用来缓存InnoDB的数据块。1、innodb_log_buffer_size决定了InnoDB重做日志缓存的大小,可以避免InnoDB在事务提交前就执行不必要的日志写入磁盘操作。2、设置Innodb_buffer_pool_size改变量决定了InnoDB存储引擎表数据和索引数据的最大缓存区大小。二、MyISAM内存优化MyISAM存储引擎使用
当一个大型系统在建立时,会发现,数据库虽然可以存储海量的数据,可是一旦数据关系复杂,比如学生表(学号、姓名、年龄),学生成绩表(学号、科目、成绩),如需要姓名、科目、成绩组成关系,这样的情况我们选择创建一个新表是非常浪费资源的动作,为此,视图诞生了!一、视图概述:(1)什么是视图?视图是基于SQL语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。视图并不在数据库中以存储的数据值集形式存在,而是存在于实际引用的数据库表中,视图的构成可以是单表查询,多表联合查询,分组查询以及计算(表达式)查询等。行和列数据来自由定义视图的查询所引
第六篇我已经讲了关于表层次的优化,包括分表分库等。但是当一个大型系统在建立时,会发现,很多的SQL操作是有重叠的,个别计算是相同的,比如:业务系统中,计算一张工单的计算方式。当遇到这些情况时,我们运用存储过程就是一个非常棒的优化啦。那么,什么是存储过程和存储函数呢?一、MYSQL储存过程简介:储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。存储过程通常有以下优点:1)存储过程能实
前一篇详细讲解了索引优化(面试重点),相信大家都有收获,没看过的可以再看看(文末有连接)。本篇则讲解表的设计及其优化,喜欢的朋友收藏关注。共同学习。正文:表的设计及优化优化①:创建规范化表,消除数据冗余数据库范式是确保数据库结构合理,满足各种查询需要、避免数据库操作异常的数据库设计方式。满足范式要求的表,称为规范化表,范式产生于20世纪70年代初,一般表设计满足前三范式就可以,在这里简单介绍一下前三范式。通俗的给大家解释一下(可能不是最科学、最准确的理解)第一范式:属性(字段)的原子性约束,要求属性具有原子性,不可再分割;第二范式:记录的惟一性约束,要求记录有惟一标识,每条记录需要有一个属性来
本专题讲到索引查询优化,恭喜你,已经达到mysql优化的中级水平。这篇我们要讲的是mysql优化中重点中的重点——索引优化。面试官百分百必问目录多关于索引,分为以下几点来讲解:一、索引的概述(什么是索引,索引的优缺点)二、索引的基本使用(创建索引)三、索引的基本原理(面试重点)四、索引的数据结构(B树,hash)五、创建索引的原则(重中之重,面试必问!敬请收藏!)六、百万级别或以上的数据如何删除一、索引的概述1)什么是索引?索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,索引就相当于目录。当你在用新华字典时,帮你把目
上一篇讲的是单表查询的优化,(本文末有链接)。当然,对数据表的多表查询也是必不可少的。本篇内容主要讲解多表联合查询的优化一、多表查询连接的选择:相信这内连接,左连接什么的大家都比较熟悉了,当然还有左外连接什么的,基本用不上我就不贴出来了。这图只是让大家回忆一下,各种连接查询。然后要告诉大家的是,需要根据查询的情况,想好使用哪种连接方式效率更高。二、MySQL的JOIN实现原理在MySQL中,只有一种Join算法,就是大名鼎鼎的NestedLoopJoin,他没有其他很多数据库所提供的HashJoin,也没有SortMergeJoin。顾名思义,NestedLoopJoin实际上就是通过驱动表的
上篇讲解了「mysql优化专题」90%程序员都会忽略的增删改优化(2),相信大家都有所收获。接下来这篇是查询优化。其实,大家都知道,查询部分是远远大于增删改的,所以查询优化会花更多篇幅去讲解。本篇会先讲单表查询优化(非索引设计)。然后讲多表查询优化。索引优化设计以及库表结构优化等后面文章再讲。单表查询优化:(关于索引,后面再开单章讲解)(0)可以先使用EXPLAIN关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮我们分析是查询语句或是表结构的性能瓶颈。(1)写sql要明确需要的字段,要多少就写多少字段,而不是滥用select*(2)可以用使用连接(JOIN)来代替子查询(3)使
前文一篇「mysql优化专题」这大概是一篇最好的mysql优化入门文章(1)让大家知道msql优化,究竟在优化什么,本篇为mysql优化专题的第二篇,主要先从增删改进行优化。大家可以收藏关注一波,若是有更好的优化方式,也可留言讨论。补充知识点:操作数据语句优化的认识通常情况下,当访问某张表的时候,读取者首先必须获取该表的锁,如果有写入操作到达,那么写入者一直等待读取者完成操作(查询开始之后就不能中断,因此允许读取者完成操作)。当读取者完成对表的操作的时候,锁就会被解除。如果写入者正在等待的时候,另一个读取操作到达了,该读取操作也会被阻塞(block),因为默认的调度策略是写入者优先于读取者。当
【mysql优化专题】:本专题全文围绕mysql优化进行全方位讲解,本篇为优化入门篇,让大家知道为什么要优化,究竟在优化什么。喜欢的朋友可以关注收藏。优化,一直是面试最常问的一个问题。因为从优化的角度,优化的思路,完全可以看出一个人的技术积累。那么,关于系统优化,假设这么个场景,用户反映系统太卡(其实就是高并发),那么我们怎么优化?如果请求过多,判定web服务器的压力过大,增加前端的web服务器,做负载均衡如果请求静态界面不卡了,但是动态数据还是卡,说明MySQL处理的请求太多了,在应用层增加缓存.数据库层其实是最脆弱的一层,一般在应用设计时在上游就需要把请求拦截掉,数据库层只承担“能力范围内