MySQL   发布时间:2022-05-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了mysql优化概述大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
设计:    存储引擎的选择,字段类型,范式
功能:    索引,缓存,分区
架构:    主从复制,读写分离,负载均衡

合理sql:测试,经验。

一、存储引擎的选择
用来存储MysqL中对象(记录和索引)的一种特定的结构(文件结构)。
存储引擎,处于MysqL服务器的最底层,直接存储数据,导致上层的操作,取决于引擎的选择。

查看MysqL支持的引擎

show ENGInes;
1、innodb
MysqL5.5以上默认的存储引擎。
提供事务,行级锁定,外键约束的存储引擎。
事务安全型存储引擎,更加注重数据的完整性和安全性。

innodb存储格式
数据,索引集中存储,存储于同一个表空间文件中。
数据(记录行)
索引(一种检索机制,也需要一定的空间)
创建innodb表后,存在文件有:
.frm 表结构文件
ibdata1 就是innodb的表空间文件,存储了数据和索引
默认,所有的innodb表的表空间文件,都在同一个空间中。

通过配置,可以让每一张innodb表,一个表空间。

> show VARIABLES LIKE 'innodb%';
> set global innodb_file_per_table=1;
数据按照主键顺序存储,插入时做排序工作,效率低。

innodb的特定功能
事务:
外键约束:
维护数据完整性。

innodb并发处理
擅长处理并发的,行级锁定(row-level locking),
多版本并发控制(MVCC),效果达到无阻塞的读操作。

锁的概念
当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作互不能互相影响),
通过加锁来处理。
操作方面:
读锁:读操作时增加的锁,也叫@R_489_11165@。阻塞其他客户端的写操作,不阻塞读操作。
写锁:写操作时增加的锁,也叫独占锁或排它锁。阻塞其他客户端的读写操作。
锁定粒度(范围):
行级:提升并发性,锁本身的开销大。
表级:不利于并发性,锁本身的开销小。

2、myisam
低于MysqL5.5版本时,MysqL的默认引擎。
ISAM:Indexed Sequential Access Method索引顺序访问方法
擅长与处理高速读与写操作。

myisam存储方式
数据,索引分别存储于不同的文件中。
.frm  数据表结构
.myd  表数据
.myi  表索引

数据的存储顺序为插入的顺序,插入速度快,空间占用量小。

myisam功能
支持全文索引(MysqL版本大于5.6,innodb也支持)
数据的压缩存储,.MYD文件的压缩存储。

进入到要压缩表的数据目录

> myisampack 表名
(*)注意,压缩后,需要重新修复索引。
> myisamchk -rq 表名
压缩优势:节省磁盘空间,减少磁盘IO开销。
特点:压缩表为只读表。
如果需要更新,则需要解压后更新,再压缩,重新索引。
> myisamchk --unpack 表名

myisam并发性
仅仅支持表级锁定。
支持并发插入,插入操作不会阻塞读操作(其他操作)。

3、archive
存档型
仅提供了插入和查询操作,非常高效,无阻塞的插入和查询。

4、memory
内存型
数据存储于内存中的存储引擎,缓存型存储引擎。

二、字段类型的选择
原则:
1、在满足需求的情况下,尽可能的占用空间小。
2、尽可能定长,占用存储空间固定。
3、尽可能的用整数

三、范式的选择
建议:满足第三范式。
有时候我们需要逆范式,提升效率。

 

大佬总结

以上是大佬教程为你收集整理的mysql优化概述全部内容,希望文章能够帮你解决mysql优化概述所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。