mysq优化

1.MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年, 怎么优化?

a. 设计良好的数据库结构,允许部分数据冗余,尽量避免 join 查询,提高效率。
b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
c. mysql 库主从读写分离。
d. 找规律分表,减少单表中的数据量提高查询速度。
e。添加缓存机制,比如 memcached,apc 等。
f. 不经常改动的页面,生成静态页面。
g. 书写高效率的 SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

2. 实践中如何优化 MySQL

最好是按照以下顺序优化:

1.SQL 语句及索引的优化

  1. 数据库表结构的优化

  2. 系统配置的优化

  3. 硬件的优化

3. 优化数据库的方法

  1. 选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置 NOTNULL,例如’省份’、’性别’最好适用 ENUM
  2. 使用连接 (JOIN) 来代替子查询
  3. 适用联合 (UNION) 来代替手动创建的临时表
  4. 事务处理
  5. 锁定表、优化事务处理
  6. 适用外键,优化锁定表
  7. 建立索引
  8. 优化查询语句

4. 如何通俗地理解三个范式?

答:

第一范式:1NF 是对属性的原子性约束,要求属性具有原子性,不可再分解;

第二范式:2NF 是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

第三范式:3NF 是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。。

范式化设计优缺点:

点:

可以尽量得减少数据冗余,使得更新快,体积小

缺点:

对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引优化

反范式化:

优点: 可以减少表得关联,可以更好得进行索引优化

缺点: 数据冗余以及数据异常,数据得修改需要更多的成本

5. 说说对 SQL 语句优化有哪些方法?(选择几条)

(1)Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量记录的条件必须写在 Where 子句的末尾. HAVING 最后。

(2)用 EXISTS 替代 IN、用 NOT EXISTS 替代 NOT IN。

(3) 避免在索引列上使用计算

(4)避免在索引列上使用 IS NULL 和 IS NOT NULL

(5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

(6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

(7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

如果文章有帮到您,很开心得到您的支持!