mysql知识点一
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+x 证书 Web 前端开发 MySQL 知识点梳理
官方QQ群 1+x 证书 Web 前端开发 MySQL 知识点梳理 http://blog.zh66.club/index.php/archives/199/
- MySQL知识点系统总结
MySQL数据库是一个非常流行的关系型数据库.配合Linux.PHP.Apache,简称lamp,是一般个人企业网站的首选.MySQL用起来不难,要系统的用好,可不是一件简单的事.于是PHP程序员雷雪 ...
- [转]10分钟梳理MySQL知识点:揭秘亿级高并发数据库调优与最佳实践法则
转:https://mp.weixin.qq.com/s/RYIiHAHHStIMftQT6lQSgA 做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离 ...
- 掌握这四大MySQL知识点,吊打面试官
作为一名后端开发,MySQL的使用必不可少,合理的使用索引和索引调优是后端开发者必须掌握的技能之一. 在日常数据库的问题当中,不合理的使用索引占大部分. MySQL是大家工作上最常用的关系型数据库之一 ...
- MySQL 知识点
文件格式: frm.MYI.MYD 分别是 MyISAM 表的表结构\索引\数据文件 一个库在一个目录下 不过在 MySQL 4.0 以上版本中, 你可 ...
- MYSQL知识点
1.MYSQL为了可移植性,使用"--"做为注释,使用"/*!*/"表示可执行的注释.
- mysql知识点汇总
1. 数据库的安装 2. 数据库设计需要注意什么 3. SQL语句优化 4. 怎样处理慢查询? 5. 怎样更好的利用数据库索引? 6. 事务隔离级别有哪些?怎么实现的? 7. 数据库锁有哪些? 8. ...
- mysql知识点拾遗梳理
mysql卸载重装过程: sudo apache2ctl stop sudo apt-get --purge remove mysql-client mysql-server mysql-common ...
- Mysql知识点个人整理
1.概念 数据库:保存有组织的数据的容器. 表: 某种特定类型数据的结构化清单 模式:关于数据库和表的布局和特性的信息?(有时指数据库) 主键: primary key 一个列或一组列,其值能唯一区分 ...
- mysql知识点总结
一.mysql_connect(),在php7已移除,有mysqli_connect(),pdo,代替. <?php header("Content-type:text/html;ch ...
随机推荐
- Java设计模式之抽象工厂(02)
对工厂方法进行抽象.当增加新的产品时,不用改动工厂类.而是集成已有的工厂接口或者抽象工厂,创建新的工厂.这就是对扩展开发,对修改封闭. 1 package Pak; 2 3 public abstra ...
- taobao.tbk.sc.newuser.order.get( 淘宝客-服务商-新用户订单明细查询 )
淘宝客订单表结构设计(mysql) CREATE TABLE `tbk_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `member_id` bi ...
- php基础教程(三)
PHP语法概述 A. 基本语法 即使初次接触PHP的用户也会发现自己对PHP的语法风格并不陌生. 例如:<?php echo "Hello!": ?> 显示结果为&qu ...
- Java方法之递归详解【重点】
递归详解 A方法调用B方法,我们很容易理解! 递归就是:A方法调用A方法!就是自己调用自己. 利用递归可以用简单的程序来解决一些复杂的问题.它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较 ...
- 7.golang语言学习,标识符的命名规范
1.凡是自己可以命名的都是标识符 2.命名规则 a.由26个英文字母,数字0-9,_组成 b.不能数字开头 c.严格区分大小写 d.不能包含空格 e.下划线"_"本身在go中是一个 ...
- IntelliJ IDEA 工具识别不了 过大Java文件 引用识别的不了的文件报错
之前出现过proto 生成的文件过大 idea 识别不了 引用消息报错. 解决方案 1.找到IntelliJ IDEA 桌面快捷键图标 右键属性 2.打开文件位置,找到所在目录 3.找到idea.pr ...
- Docker--在 Jenkins 容器上的搭建持续集成环境和完成自动化测试
本文转自:https://www.cnblogs.com/poloyy/p/13955641.html Jenkins 初始化流程 访问 Jenkins 查看本机 IP ifconfig 查看容器运行 ...
- 046_salesforce 中 Get URL
Suppose u have the whole URL as: < https://cs14.salesforce.com/apex/myVFpage?id=906F00000008w9wIA ...
- vue验证码倒计时60s
vue3验证码倒计时60s //倒计时60s const timeNum = ref(60); const countDown = ref(); const isShowSend = ref(true ...
- IIS10.0 Web平台安装程序无法安装URL重写工具
Windows10系统的IIS10.0需要安装URL rewrite重写模块2.0,提示"很遗憾,无法安装下列产品",解决方法: win键+R键,运行regedit,打开注册表编辑 ...