博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql优化概述
阅读量:6692 次
发布时间:2019-06-25

本文共 1420 字,大约阅读时间需要 4 分钟。

设计:    存储引擎的选择,字段类型,范式功能:    索引,缓存,分区架构:    主从复制,读写分离,负载均衡合理SQL:测试,经验。一、存储引擎的选择用来存储MYSQL中对象(记录和索引)的一种特定的结构(文件结构)。存储引擎,处于MYSQL服务器的最底层,直接存储数据,导致上层的操作,取决于引擎的选择。查看mysql支持的引擎show engines;1、innodbmysql5.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、尽可能的用整数三、范式的选择建议:满足第三范式。有时候我们需要逆范式,提升效率。

 

转载于:https://www.cnblogs.com/jkko123/p/6294665.html

你可能感兴趣的文章
mybatis-generator相关
查看>>
在软件开发中利用反射机制来减少包依赖
查看>>
Android实现推送方式解决方案
查看>>
在Winform程序运行时启动Cmd命令行显示日志信息的设置方法
查看>>
BF&KMP&BM简析
查看>>
openssl使用SMTP从gmail发邮件
查看>>
AngularJS Module类的方法
查看>>
nginx反向代理httpd获取用户真实ip
查看>>
postgresql中的查询(query)二
查看>>
AspectJ深入学习
查看>>
js限制用户上传文件类型
查看>>
忘记mysql数据密码,如何重设
查看>>
在SpringMVC中整合jfinal微信项目
查看>>
扩展CURL后,cmd命令无法加载
查看>>
绕过 GIL 提升 Python 性能的一般方法
查看>>
用Eclipse追PostgreSQL源码
查看>>
【原创】第一个iOS应用程序
查看>>
PHP去除BOM头的方法
查看>>
提醒 TickTick v2.8.5.4 最新版
查看>>
怎么在Beyond Compare中插入表格数据
查看>>