mysql优化
文章来自 shichang // Welcome!
主页
|
About Me
|
归档
|
标签
### 数据库设计三范式 1NF: 表中的属性不可再分,确保每一列的原子性 2NF: 满足1NF,并确保表中的属性必须依赖于全部主键而非部分主键 3NF: 满足2NF,并确保非主键外的所有属性互相之间不依赖 遵循三范式优化表的结构,可以减少数据的冗余,使得数据的插入删除和修改不会出现异常。 [知乎:数据库第一二三范式详解](https://www.zhihu.com/question/24696366) <br> ### 建立索引: 建立索引可以极大地加快数据库查询的速度 缺点:增加了数据库的存储负担,数据库内容在进行变更时需要更新索引花费时间 一般建立索引的列:查询频率比较高的列上,主键,经常使用连接的列(外键诸多) <br> ### 纵向分割表 表的纵向切分表示将对象的不同属性分割用其他的表存储。 情况1:表中的词条数量也许并不是很多,但是某些属性的字段非常的长,表仍然占用了很大的空间,每次在执行检索时都将花费大量的时间进行I/O,这时可以选择将表中的这一字段非常长的属性拆分出去,并保持现有的一一对应的关系。 情况2: 表中的属性非常多,可以选择将一部分属性拆分出去形成新表并保持和原表一一对应的关系。 <br> ### 使用缓存服务器 根据二八原则,网络上80%的访问都是针对那20%的数据去的,所以将热点数据用专用服务器独立存储和处理,可以降低主数据库服务器的压力。 <br> ### 读写分离 使用缓存后,还有少量的读操作和全部的写操作将在数据库服务器中进行。使用MySQL的复制功能,将数据库分成主从两个数据库,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。 <br> ### 横向分割表 一个表的数据量太多时,可以根据其中的某一个值将表横向分割成两个表。比如说如果表中有一个字段为日期时间,则可以根据日期将表中的数据划分成两半甚至更多份。 想法:如果一个表中的数据量按时间增长迅速,则可以将表按日期划分,或者是表中的数据均匀增长,将一段时间的数据存入一个表,下一个时间段则建立一个新表进行下一轮存储。 [MySQL数据库优化总结](http://www.cnblogs.com/villion/archive/2009/07/23/1893765.html)
Pre:
死锁
Next:
连续内存分配