php面试专题---19.MySQL高可扩展和高可用考点 一.总结 一句话总结: 要区别分区和分库分表,分区的话对用户是透明的,分库分表的话需要程序员做点事情,主从数据库同步的话借助的是二进制日志 1.mysql分区表的原理? 用户透明:对用户而言,分区表是一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这对用户来说是透明的,每一个分区表都会使用一个独立的表文件 比如age10-25的放到第一个分区:创建表时使用partition by子句定义每个分区存放的数据,执行查询时,优化器会…
MySQL的高可扩展和高可用 面试题一 MySQL分表和分区的工作原理,分表和分区的使用场景和优缺点. 分区表的原理 对用户而言,分区表时一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这对用户来说是透明的,每一个分区表都会使用一个独立的表文件. 创建表时使用partition by 子句定义每个分区存放的数据,执行查询时,优化器会根据分区定义过滤那些没有我们需要的分区,这样查询只需要查询所需数据在的分区即可. 分区的主要目的是将数据按照一个较粗的粒度分在不同的表中,这样可以将相关的…
php面试专题---mysql数据库分库分表 一.总结 一句话总结: 通过数据切分技术将一个大的MySQLServer切分成多个小的MySQLServer,既攻克了写入性能瓶颈问题,同一时候也再一次提升了整个数据库集群的扩展性.不论是通过垂直切分,还是水平切分.都能够让系统遇到瓶颈的可能性更小.尤其是当我们使用垂直和水平相结合的切分方法之后,理论上将不会再遇到扩展瓶颈了. 1.分库分表解决系统负载的流程是什么? 1.先垂直分表,代价小 2.再水平分表 每一个应用系统的负载都是一步一步增长上来的,…
php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等. 1.mysql建立索引的几个准则? 1.合理:合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度. 2.适量:索引越多,更新数据的速度越慢. 3.分布式缓存:当你的程序和数据库结构/SQL语句已经优化到无法优化的程度,而程序瓶颈并不能顺利解决,那就是应该考虑使用诸…
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行计划和B+树以后,优化SQL语句还是比较简单的,当然还有特别复杂的SQL,我这里只是一些简单例子,当然再复杂的SQL,还是逃脱不了原理性的东西. 1.mysql中无法使用索引的情况? (1).以%开头的like查询 (2).数据类型出现隐式转换的时候也不会使用索引,特别是当列类型是字符串,那么一定记…
php面试专题---MySQL分区 一.总结 一句话总结: mysql的分区操作还比较简单,好处是也不用自己动手建表进行分区,和水平分表有点像 1.mysql分区简介? 一个表或索引-->N个物理分区对象:分区是根据一定的规则,数据库把一个表分解成多个更小的.更容易管理的部分.就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的对象,可以独立处理,可以作为表的一部分进行处理. 分区不影响程序员编程:分区对应用来说是完全透明的,不影…
php面试专题---18.MySQL查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询语句 1.mysql中如何查询哪些慢的查询? 慢查询日志:里面会记录那些比较慢的日志,可以使用pt-query-digest工具进行分析 explain语句:可以分析单条语句的查询效率 show profile.show status.show processlist等语句:查询语句执行慢的各种情况…
php面试专题---16.MySQL创建高性能索引考点 一.总结 一句话总结: 注意:只写精品 1.索引的基础? 类似书籍的目录:索引类似于书籍的目录,要想找到一本书的某个特定主题,需要先查找书的目录,定位对应的页码 索引->行号->数据:存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行 2.索引对性能的影响? 1.大大减少服务器需要扫描的数据量,大大提高查询速度,降低写的速度.占用磁盘 2.帮助服务器避免排序和临时表 3.将随机I/O变顺序I/…
php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动) 2.在哪些列上面创建索引比较合适? 1.连接的列:在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度: 2.范围:在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的: 3.排序:在经常需要排序的列上创建索…
php面试专题---15.MySQL数据库基础考察点 一.总结 一句话总结: 注意:只写精品 1.mysql定义int(3),那么我存1234就错了么? 不是:无影响:只会影响显示字符的个数:可以为整数类型指定宽度,例如:INT(11).对大多数应用是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数 int(3)的意义:如果我们是12,又设置了zerofill,那么mysql自动为我们填充为012 2.mysql中FLOAT.DOUBLE.DECIMAL注意 ? 1.DECIMAL可存…