数据库优化
来源:互联网 发布:螺纹梳刀编程 编辑:程序博客网 时间:2024/06/06 13:21
性能瓶颈
要正确的优化SQL,需要快速定位性能的瓶颈点。
索引
索引会大大增加表记录DML(insert、update、delete)的开销。一个表可以建多个索引,一个索引可以由多个字段组成。有些时候,只需要访问表中的几个字段,并且字段内容较少,可以为这几个字段单独建立一个组合索引。
性能优化是无止境的,当性能可以满足需求时即可,不要过度优化。在实际数据库中我们不可能把每个SQL请求的字段都建在索引里,所以这种只通过索引访问数据的方法一般只用于核心应用,也就是那种对核心表访问量最高且查询字段数据量很少的查询。
减少交互次数
数据库访问框架一般都提供了批量提交的接口。
设置Fetch_Size。当使用select查询数据库时,根据客户端fetch_size参数返回相应数量的记录。fetchsize并不会存在一个最优的固定值,因为整体性能与记录集大小及硬件平台有关。
mysql mysiam/innodb表存储引擎
当数据库有大量的写入、更新操作而查询比较少的时候选择innodb;当数据库主要以查询为主,更新和写入比较少并且数据完整性要求不难严格选择mysiam。mysiam表的查询操作效率和速度都比innodb快。
数据切分,分库分表
首先找到数据表的区分字段(主键),根据分库的规则将数据分散到各个数据库中。查询数据时,根据区分字段和分库规则,定位到目标数据库,称为DB路由。
分库降低了单个机器的负载;分表,提高了数据操作的效率。
垂直切分、水平切分
垂直切分根据业务是否紧密、表之间的关联程度分成独立的几个shared。
水平切分是一个shared内数据表的进一步切分。数据表的水平切分,表中要有冗余字段作为切分依据和标记字段。
另一点就是对数据表中经常变动的字段和固定字段的拆分,把经常变动的字段独立出来,记录在持久化类的缓存中。
读写分离
读写分离技术就是一个Master数据库,多个Slave数据库,Master库负责数据更新和实时数据查询,Slave库负责非实时数据查询。在实际应用中,数据库都是读多写少,但是读取数据通常耗时比较长。
读写分离适用于读远大于写的场景。
- 优化数据库
- 数据库优化
- 数据库优化
- 数据库优化
- 数据库优化
- 优化数据库
- 数据库优化
- 数据库优化
- 数据库优化
- 数据库优化
- 数据库优化
- 数据库优化
- 优化数据库
- 数据库优化
- 数据库优化
- 数据库优化
- 数据库优化
- 数据库优化
- ACM--模拟--nyoj 559--报数游戏--湖南第七届省赛
- 斐波那契数列的第 n 项 mod 1000000007(矩阵乘法)
- 浅析栈区和堆区内存分配的区别
- 你好哇,程序员 - me 跳槽经验说
- Box2d源码学习<六>动态树的实现
- 数据库优化
- java堆与栈
- 【人体姿态】Stacked Hourglass算法详解
- Dijkstra算法 c/c++实现
- UVA10806Dijkstra, Dijkstra.
- Mybatis入门实践+与Hibernate对比
- namespace的用法理解
- java学习总结(16.05.16)java的标识符和命名规则
- 关于百度地图SDK v3.6.0以上版本找不到PoiOverlay类(开源代码)的解决方法.