Blogger Information
Blog 5
fans 0
comment 0
visits 6785
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQL优化
王志强
Original
1157 people have browsed it

1.定长和非定长数据类型的选择
decimal不会损失精度,存储空间会随数据的增大而增大。double占用固定空间,较大数的存储会损失精度。非定长的还有varchar、text.
2.尽可能使用not null
非null字段的处理要比null字段的处理高效些,且不需要判断是否为null.因为null在MySQL中,不好处理,存储需要额外空间,运算也需要特殊的运算符。
3.索引分类
普通索引:对关键字没有限制
唯一索引:要求记录提供的关键字不能重复
主键索引:要求关键字唯一且不为null
4.mysql主从复制
主从复制,是用来简历一个和住数据库完全一样的数据库环境,成为从数据库,主数据库一般是准实时的业务数据库
作用:做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失;架构的扩展,随着业务量的增大,i/o访问频率过高,单机无法满足,此时做多库的存储,减低i/o访问的频率,提高单个机器的i/o性能;读写分离,使数据库能支撑更大的并发。再报表中尤其重要,由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
主从复制产生的问题:
主机宕机,数据可能丢失
从库只有一个sql Thread,主库写压力大,复制很可能延时;
解决方法:半同步复制 ——解决数据丢失的问题
并行复制——解决从库复制延迟的问题
主从复制的原理
1.数据库有个bin-log二进制文件,记录了所有sql语句。
2.主数据库中的bin-log文件的sql语句复制过来
3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。
4.具体需要三个线程来操作
binlog输出线程:每当有从库连接到主库的时候,主库都会创建一个线程然后发送binlog内容到从库。在从库里,当复制开始的时候,从库就会创建两个线程进行处理:
从库I/O线程:当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷贝这些更新到本地文件,其中包括relay log文件。
从库的SQL线程:从库创建一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并执行。可以知道,对于每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个binlog输出线程,每一个从库都有它自己的I/O线程和SQL线程。
主从复制步骤
步骤一:主库db的更新事件(update、insert、delete)被写到binlog
步骤二:从库发起连接,连接到主库
步骤三:此时主库创建一个binlog dump thread线程,把binlog的内容发送到从库
步骤四:从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log.
步骤五:还会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db.
5.读写分离
将数据库分为读库和写库,通过主备功能实现数据同步。
6.分库分表
分库分表则分为水平切分和垂直切分,水平切分则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务的不同来切分,如用户业务、商品业务相关的表放在不同的数据库中。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post