• MySQL数据库优化


    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语句及索引的优化

    2. 数据库表结构的优化

    3.系统配置的优化

    4.硬件的优化

    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 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

  • 相关阅读:
    微信小程序 组件事件传递
    vue 项目引入字体报错
    vue 单文件 样式写了scoped 不能覆盖框架原有样式的解决办法
    react 动态获取数据
    百度地图marker点击任意一个当前的变化,其余的marker不变
    对象字面量中可以使用中括号作为属性,表示属性也能是一个变量
    二维数组转化为一维数组 contact 与apply 的结合
    一个对象如何复制给另一个对象,互不影响
    在-for 循环里面如何利用ref 操作dom
    mac 进程管理
  • 原文地址:https://www.cnblogs.com/mapb/p/12970815.html
Copyright © 2020-2023  润新知