• 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),效果达到无阻塞的读操作。
    
    锁的概念
    当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作互不能互相影响),
    通过加锁来处理。
    操作方面:
    读锁:读操作时增加的锁,也叫共享锁。阻塞其他客户端的写操作,不阻塞读操作。
    写锁:写操作时增加的锁,也叫独占锁或排它锁。阻塞其他客户端的读写操作。
    锁定粒度(范围):
    行级:提升并发性,锁本身的开销大。
    表级:不利于并发性,锁本身的开销小。
    
    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、尽可能的用整数
    
    三、范式的选择
    建议:满足第三范式。
    有时候我们需要逆范式,提升效率。
    
  • 相关阅读:
    deepin 系统更新命令
    安装mongdb
    读model所得
    上周某一天
    在项目中直接执行里面的文件
    数据库(六)
    数据库(五)
    数据库(四)
    数据库(三)
    数据库(二)
  • 原文地址:https://www.cnblogs.com/jkko123/p/6294665.html
Copyright © 2020-2023  润新知