zoukankan      html  css  js  c++  java
  • 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 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    AcceptEx与完成端口(IOCP)结合实例
    GMap.NET实现电子围栏功能(WPF版)
    十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
    AutoCAD 凸度(bulge)的概念及使用WPF函数画图
    WinForm版图像编辑小程序(实现图像拖动、缩放、旋转、抠图)
    使用GMap.NET类库,实现地图轨迹回放。(WPF版)
    使用 GMap.NET 实现添加标注、移动标注功能。(WPF版)
    关于组织召开 “2015中国职业经理人大会”的通知
    Windows平台下使用ffmpeg和segmenter实现m3u8直播点播
    【求职必备】知名互联网公司常见面试问题和应答策略--通用篇
  • 原文地址:https://www.cnblogs.com/name-lizonglin/p/13084040.html
Copyright © 2011-2022 走看看