MySQL优化(二)
1、建立基础索引:在where,order,join字段上建立索引
优化,组合索引:基于业务逻辑
前缀索引使用上与普通索引一致!
2、索引的存储结构:Btree索引,hash索引,聚簇索引
Btree不是二叉树
在MySQL中,仅仅只有InnoDB的主键索引是聚簇结构,其他的都是典型的BTree结构
Hash索引就是key-value,就是PHP中的关联数组,索引被载入到内存时
3、queryCache,当数据表结构改动,缓存失效,动态数据不能被缓存
show variables like 'query_cache_type'
show variables like 'query_cache_size'
set global query_cache_size=102760448;
select sql_cache * from student where user like '%fyw'
4、分区,partition
一个表的数据和索引存储在不同文件中
//利用id字段,使用hash算法,将数据分布到10个分区内
partition by hash(id) partitions 10
5、算法
(1)hash算法:(均匀分配)
分区算法,在业务逻辑层面,表示均匀分配。
(2)key算法:(均匀分配)
partition by key(subject) partitions 10
分区必须是主键的一部分,分区字段一定是强检索字段。
(3)range算法:(条件分配)
partition by range(pubtime){
partition p201710 values less than (1509465599),
partition p201711 values less than (1512057599)
}
条件必须是< less than运算符
(4)list算法:(条件分配)
也是一种条件分区,列表值分区
partition by list(status){
partition pdone values in (1,2),
partition pdod values in (3)
}
业务逻辑有明显差异的时候选择条件分配,无明显差异则选择均匀分配
list,range可以删除或新增分区
alter table table-name add partition{
partition p201710 values less than (1509465599),
partition p201711 values less than (1512057599)
}
hash,key可以修改分区数量
alter table table-name add partitions 4;
alter table table-name coalesce partition 6;
只有检索字段是分区字段的时候,分区效率才会比较明显
6、分区的原因:
数据库减压
分区的算法局限(重要原因)
分区和分表都是属于水平化划分
垂直分割:每个表的记录数量是一致的,但字段不一致
7、读写分离,负载均衡
需要用到的技术,MySQL复制技术,负载均衡中间件
读写分离:
有一些MySQL服务器提供读操作,select
另一些MySQL服务器提供写操作,insert,update,delete
母的,分散压力,读服务器不会被阻塞
所有PHP的框架都支持读写分离的配置
写为主服务器,其余为读服务器
6、开启索引和约束,一次性创建索引
alter table table-name disabled keys
alter table table-name enable keys
7、MySQL主要采用一写多读架构,读操作大大多于写操作,还有就是写操作同步问题
一写多读中,读服务器就需要负载均衡工作
典型负载算法:
轮询:轮着来
加权轮询:依据能力,轮着来
负载分配:依据空闲状态
8、横向扩展Mysql服务器;读写分离、主从复制、负载均衡(高性能)
9、高可用:需要保证24小时不停机 在服务器架构时,所有单点服务器都需要配置冗余服务器,心跳检测
10、大页码,limit offset
尽量保证不用出现大的offset,在使用limit时。
11、select * 少用
单表查询代替多表查询
原因是:
多表查询的执行,join,子查询,也是一个表的去执行,执行完再去合并结果。
计算分布,单表查询,计算压力在应用程序端,多表查询,计算压力在数据库上。
多表查询,会增加表锁定时间,降低程序并发性能。
单表查询,增加了程序复杂度。使用ORM模型,模型已经做了大量的工作完成单表处理。
12、count(1)和count(*)类似,统计记录数量
13、mysqlslap压力测试工具
CMD上直接运行:mysqlslap
并发测试:mysqlslap --auto-generate-sql --concurrency=250 --iterations=10 --engine=innodb -uroot -phellokang
14、全文索引:关键字不是字段本身,而是从字段中提取的关键词,作为关键字
PHP典型的全文索引工具:Coreseek ,XunSearch,Solr都是典型的全文索引工具
转载于:https://www.cnblogs.com/Min-Na/p/11095456.html
MySQL优化(二)相关推荐
- mysql to days 索引_高性能mysql优化二之索引篇
前言 为什么要使用索引?索引有什么用途呢?我的亲身经历,一个几千万数据的项目,我写了一条查询,没有用到索引,由于访问量比较大,瞬间网站就跪了,从此以后我写的每一条sql都会explain解析看是否用到 ...
- MySQL优化系列(二)--查找优化(1)(非索引设计)
MySQL优化系列(二)--查找优化(1)(非索引设计) 接下来这篇是查询优化,用户80%的操作基本都在查询,我们有什么理由不去优化他呢??所以这篇博客将会讲解大量的查询优化(索引以及库表结构优化等高 ...
- MySQL优化(二):索引的类型、匹配原则、创建原则
目录 索引的优缺点 索引类型 聚簇索引(主键索引) 非聚簇索引(二级索引.辅助索引) 索引匹配的原则 最左匹配原则 无法使用索引的场景 索引创建的原则 使不使用索引的依据到底是什么? 参考 索引的优缺 ...
- zabbix mysql优化 my.cnf_zabbix数据库优化之数据库优化(二)
zabbix数据库优化之数据库优化二 简介 数据库history设置是保存7天.然后如果你没有分区.虽然数据在减少但是表空间不会减少.浪费硬盘空间的同事缓存内的cache部分也没有被释放.分区后可以迁 ...
- MySQL(二):MySQL性能优化
[目录] MySQL(一):MySQL中的事务 MySQL(二):MySQL性能优化 [前言] 在对MySQL的事务进行了学习总结之后,继续对MySQL的性能优化进行学习并进行总结,将自己在工作中的性 ...
- 第十二章 MySQL优化
1. 优化哲学 1.1 为什么优化? 为了获得成就感? 为了证实比系统设计者更懂数据库? 为了从优化成果来证实优化者更有价值? 但通常事实证实的结果往往会和您期待相反! 优化有风险,涉足需谨慎! 1. ...
- Mysql 优化(学习笔记二十)
https://blog.csdn.net/steven_liwen/article/details/53188411 运维角度mysql优化:https://www.cnblogs.com/shen ...
- MySQL优化配置之query_cache_size
原理 MySQL查询缓存保存查询返回的完整结果.当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段. 查询缓存会跟踪查询中涉及的每个表,如果这写表发生变化,那么和这个表相关的所有缓存都将失 ...
- 4 个 MySQL 优化工具 AWR,帮你准确定位数据库瓶颈!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:今日头条,作者:老王谈运维 www.toutiao.com/ ...
- 项目中常用的19条MySQL优化
声明一下:下面的优化方案都是基于 " Mysql-索引-BTree类型 " 的 一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单 ...
最新文章
- 基于SSH框架实际开发时遇到的问题及解决办法
- 绩效考核如何才能突破上司的主观偏见局限?
- 从Ruby调用Shell命令
- 在不同制作基础上该如何选择网页制作软件?
- what is love?
- BugKuCTF 杂项 隐写
- Matplot的常见问题
- Visual Studio 快捷键使用方法
- springcloud架构特点_打造企业级微服务平台架构,分布式应用场景管理
- c语言做一个小程序报告,《C语言程序设计实践》课程报告30个小程序组合成一个大程序.doc...
- python import sql脚本_13-模块介绍-import两种方式-py文件的两种用途-模块搜索路径-项目开发的目录规范...
- python3.6.5安装pip_无法在Python3.6中pip安装pickle
- python webdriver 登录163邮箱发邮件加附件, 外加数据和程序分离,配置文件的方式...
- iOS 算法的前世今生:算法原理、常用算法(一)排序算法
- MFC开发上位机经验
- VB.NET连接SQL数据库
- 机器人末端执行器气爪怎么吸合_工业机器人带动末端执行器市场发展
- R语言制作长三角城市群空间权重矩阵及作图显示
- android 如何把.swf作为开机动画,win10系统将PPT幻灯片转为SWF动画的操作方法
- SPI转can芯片CSM300详解以及Linux驱动移植调试笔记
热门文章
- jQuery实现倒计时重新发送短信验证码功能示例
- Linq实战 之 Linq to Sql及Entity Framework操作详解
- mouseover与mouseenter、 mouseout与mouseleave的区别
- 我国三大常用坐标系区别(北京54、西安80和WGS-84)
- (论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?
- python-extend用法
- 2020-2021年NLP有什么核心技术的更迭吗?或者有什么推动领域发展的paper吗?
- 【AAAI 2020】微软亚洲研究院6篇精选论文在家必看!
- 【文本分类】几个可作为Baseline的模型
- 干货 | 一文掌握常用的机器学习模型