mysql优化

来源:互联网 发布:android网络访问404 编辑:程序博客网 时间:2024/06/06 19:55
1、为什么要进行mysql优化?假设我们设置一个数据量超过10万条记录的表,来进行我们经常做的查询操作比如:select * from 表名,服务器很慢甚至卡死,需要我们重启数据库服务器,这说明我们的表或者查询SQL是有问题的,所以我们要进行mysql优化2、数据库优化的目标?通过各种对数据库的优化方法,获取最高的查询和加载性能,达到查询性能的提高和加载性能的提高。3、掌握优化的方式和途径建表、索引、配置、SQL语句都需要优化4、掌握建表和分表优化?①数据库表设计符合范式要求:第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一的区分第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。适当反三范式。。。。②数据库字段的设置要合理介绍常用数据类型的特点及如何选择合适的数据类型:int  4个字节char varchar text 存储文件decimal 存金钱enum(枚举)只适合存字符串float4个字节
 
从空间来说BIGINT占用8个字节CHAR要占用11个,在海量数据中差别很明显从效率来说INT效率更高
 
③为什么要分表?数据库中的数据量不一定是可控的,在未进行分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。④什么是分表?原本存储于一个表的数据分块存储到多个表上5、掌握数据库的查询优化①关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。解释输出列的含义(备注): select title from article where title like '菲律宾%';②数据库的优化查询主要有以下几个规则: 避免全表扫描 eg:select * from 表名;(不可取) 尽量使用索引查询 eg:select age from user where age>10; 避免使用select * 尽量使用数字型字段(把包含数值信息的字段设计为字符型,会降低查询和链接的性能,引擎在处理查询和链接会逐个比较字符串中的每个字符 ,而对于数字型而言只需要比较一次就够了) 避免向客户返回大量数据 避免大的事务性操作,提高系统并发能力一个插入500万行的事务,有索引2个导致别的操作缓慢,如果改成每次 插入5万行,插100次,这样别的操作会受影响小吗?5、掌握MySQL数据库的索引优化6、掌握数据库的配置优化7、掌握数据库的查询优化
原创粉丝点击