1.mysql中造成索引失效的原因有哪些?如何分析和解决?
原因:
1.like以通配符%开头索引失效 通常用的索引数据结构是B+树,而索引是有序排列的
优化:一种是使用覆盖索引,另一种是把%放后面
2.字段类型是字符串,where时没有用引号括起来。表中的字段为字符串类型,是B+树的普通索引,如果查询条件传了一个数字过去,它是不走索引的。
3.OR 前后只要存在非索引的列,都会导致索引失效
4.联合索引(组合索引),查询时的条件列不是联合索引的第一个列,索引失效
5.计算、函数、类型转换(自动或手动)导致索引失效,索引字段上使用(!= 或者 < >,not in)时,可能会导致索引失效
6.is null可以使用索引,is not null无法使用索引
7.左连接查询或者右连接查询查询关联的字段编码格式不一样
8.mysql估计使用全表扫描要比使用索引快,则不使用索引

2.mysql的分库分表的原因是什么,什么时候进行分库分表
因为数据库以一张表上查询大量数据会效率会很低,所以当查询大量数据的时候
1.水平分库:
以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。
结果:
每个表的结构都一样;
每个表的数据都不一样,没有交集;
所有表的并集是全量数据;
2.垂直分库:
以表为依据,按照业务归属不同,将不同的表拆分到不同库中
结果:
每个库的结构都不一样;
每个库的数据也不一样,没有交集;
所有库的并集是全量数据;
纵向分表:将本来一个表中那个数据,根据数据的活跃度进行分离(因为不同活跃的数据,处理方式是不同的)
横向分表:根据数量的规模来划分,保证单表的容量不会太大

3.mysql的主从复制,解决的是什么问题?如何进行主从复制
解决问题:
(1).读写分离
在开发工作中,有时候会遇见某个sql 语句需要锁表,导致暂时不能使用读的服务,
这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,
通过读从库也可以保证业务的正常运作
(2).数据实时备份
提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而
不破坏主服务器相应数据;
(3).高可用
因为数据库服务器中的数据都是相同的,当Master挂掉后,可以指定一台Slave充当Master继续保证服务的运行,因为数据是一致性的(如果当插入时Master就挂掉,
可能不一致,因为同步也需要时间)当然这种配置不是简单的把一台Slave充当Master,毕竟还要考虑后续的Slave的数据同步到Master。
在主服务器上执行写入和更新,在从服务器上向外提供读功能,达到读写分离的效果,也可以动态地调整从服务器的数量,从而调整整个数据库的性能。
在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能。
(4).架构扩展
随着系统中业务访问量的增大,如果是单机部署数据库,就会导致I/O访问频率过高。
有了主从复制,增加多个数据存储节点,将负载分布在多个从节点上,降低单机磁盘I/O访问的频率,
提高单个机器的I/O性能
MySQL 主从复制有三种方式:
(1)基于SQL语句的复制(statement-based replication,SBR)
就是记录sql语句在bin-log中,Mysql 5.1.4 及之前的版本都是使用的这种复制格式。
优点是只需要记录会修改数据的sql语句到bin-log中,减少了bin-log日质量,节约I/O,
提高性能。缺点是在某些情况下,会导致主从节点中数据不一致(比如sleep(),now()等)
(2)基于行的复制(row-based replication,RBR)
mysql master 将SQL语句分解为基于ROW更改的语句并记录到 5 bin-log中,也就是只记录哪条数据被修改了,修改成什么样。
优点是不会出现某些特定情况下的存储过程、或者函数、或者trigger的调用或者触发无法被正确复制的问题。
缺点是会产生大量的日志,尤其是修改table的时候会让日志暴增,同时增加bin-log同步时间。也不能通过bin-log解析获取执
行过的sql语句,只能看到发生的data变更
(3)混合模式复制 (mixed-based replication,MBR)
对于一般的复制使用STATEMENT模式保存到bin-log,对于STATEMENT模式无法复制的操作
则使用ROW模式来保存,MySQL会根据执行的SQL语句选择日志保存方式

4.mysql的读写分离是怎么回事?
读写分离:
就是只在主服务器上写,只在从服务器上读。基本的原理是让主数据库处理事务性查询
,而从数据库处理select查询。数据库复制被用来把主数据库上事务性查询导致的变更同步到集群中的从数据库

5.优化mysql的方案有哪些?
(1)SQL和索引优化
使用正确的索引,分段查询,
(2)数据库结构优化
最小数据库长度,使用最简单数据类型,尽量少定义text类型,选择合适的存储引擎,适当分库分表策略
(3)系统硬件优化
磁盘,网络,内存

mysql知识点一的更多相关文章

  1. 1+x 证书 Web 前端开发 MySQL 知识点梳理

    官方QQ群 1+x 证书 Web 前端开发 MySQL 知识点梳理 http://blog.zh66.club/index.php/archives/199/

  2. MySQL知识点系统总结

    MySQL数据库是一个非常流行的关系型数据库.配合Linux.PHP.Apache,简称lamp,是一般个人企业网站的首选.MySQL用起来不难,要系统的用好,可不是一件简单的事.于是PHP程序员雷雪 ...

  3. [转]10分钟梳理MySQL知识点:揭秘亿级高并发数据库调优与最佳实践法则

    转:https://mp.weixin.qq.com/s/RYIiHAHHStIMftQT6lQSgA 做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离 ...

  4. 掌握这四大MySQL知识点,吊打面试官

    作为一名后端开发,MySQL的使用必不可少,合理的使用索引和索引调优是后端开发者必须掌握的技能之一. 在日常数据库的问题当中,不合理的使用索引占大部分. MySQL是大家工作上最常用的关系型数据库之一 ...

  5. MySQL 知识点

    文件格式: frm.MYI.MYD   分别是   MyISAM   表的表结构\索引\数据文件       一个库在一个目录下    不过在   MySQL   4.0   以上版本中,    你可 ...

  6. MYSQL知识点

    1.MYSQL为了可移植性,使用"--"做为注释,使用"/*!*/"表示可执行的注释.

  7. mysql知识点汇总

    1. 数据库的安装 2. 数据库设计需要注意什么 3. SQL语句优化 4. 怎样处理慢查询? 5. 怎样更好的利用数据库索引? 6. 事务隔离级别有哪些?怎么实现的? 7. 数据库锁有哪些? 8. ...

  8. mysql知识点拾遗梳理

    mysql卸载重装过程: sudo apache2ctl stop sudo apt-get --purge remove mysql-client mysql-server mysql-common ...

  9. Mysql知识点个人整理

    1.概念 数据库:保存有组织的数据的容器. 表: 某种特定类型数据的结构化清单 模式:关于数据库和表的布局和特性的信息?(有时指数据库) 主键: primary key 一个列或一组列,其值能唯一区分 ...

  10. mysql知识点总结

    一.mysql_connect(),在php7已移除,有mysqli_connect(),pdo,代替. <?php header("Content-type:text/html;ch ...

随机推荐

  1. 解决 ant design vue Carousel 图片不能点击的问题

    pointer-events: none 的作用如下: // 阻止用户的点击动作产生任何效果 // 阻止缺省鼠标指针的显示 // 阻止CSS里的hover和active状态的变化触发事件 // 阻止J ...

  2. 说说Selenium的几个痛处

    Selenium挺好用,但也有几个不爽的地方: 1. 元素无法点击,因为scroll to element这一招时常不管用 2. 调试慢,一进入调试模式,PyCharm突然变慢, evaluate如同 ...

  3. APP数据指标体系分析

    一.APP的数据指标体系主要分为五个维度,包括用户规模与质量.参与度分析.渠道分析.功能分析和用户属性分析. 1.用户规模和质量 用户规模和质量是APP分析最重要的维度,其指标也是相对其他维度最多,数 ...

  4. Java 03-基础 堆和栈(另,理解Java内存)

    概述: 栈区(STACK)堆区(HEAP) 1.栈中主要存放一些基本类型的变量,且每一个基本数据类型有固定的大小(byte,short,int,long,float,double,boolean,ch ...

  5. SQL SERVER 截断大日志文件

    1.改成完整模式下,先完整备份,然后只备份事务日志2. 改成简单模式,然后截断(运行下边示例代码)3.再备份事务日志(观察LDF文件有没有变小)-----收缩大日志  SELECT * FROM sy ...

  6. [BOM]判断是否为pc页面、是否为ios页面

    常用于pc页面与h5页面的跳转和适配,区分不同设备进行下载跳转区分. var is_pc = !(navigator.userAgent.match(/(phone|pad|pod|iPhone|iP ...

  7. 记一次mybatis中like 不执行sql的问题,单引号 与双引号的坑

    使用环境: springboot 2.0.4 mybatis-spring:1.3.2 错误也是比较蛋疼:  不报错,但是查询出来的结果不对. 原错误sql 示意:  select  * from  ...

  8. Application.HandleMessage与Application.ProcessMessage

    HandleMessage: HandleMessage中断应用程序的执行,以便Windows可以在将控制权返回给应用程序之前处理来自Windows消息队列的单个消息. 如果消息队列为空,则Handl ...

  9. eclipse中同步git代码报错checkout conflict with files

    1.Team--->Synchronize Workspace 2.在同步窗口找到冲突文件,把自己本地修改的复制出来 3.在文件上右键选择 Overwrite----->Yes , 4.再 ...

  10. <雪山飞狐><飞狐外传 >合辑剧情+随笔

    严格而言雪山飞狐与飞狐外传的剧情并不相关,前者写作与前,然后飞狐外传算是对雪山飞狐中形象并不饱满的胡斐作进一步补充描述,同时对二十余年前苗人凤与胡一刀之间故事的补充,以及众人叙述中的一些补充.因此虽然 ...