一、数据库优化包含的方面

数据库优化是一种综合性的技术。并非通过某一种方式让数据库效率提高非常多。而是通过多方面的提高。从而使得数据库性能提高。

主要包含:

1、表的设计合理化(3范式)

2、给表加入合适的索引。怎样使用索引

3、分表技术(水平切割、垂直切割)

4、定时清除数据垃圾,定时碎片整理

5、多用存储过程和触发器

6、对mysql配置进行优化

7、读写分离

8、mysqlserver硬件升级。





二、数据库的设计

步骤:

1、收集信息:与该系统有关人员进行交流。充分了解数据库须要完毕的任务

 

2、标识实体:详细存在的对象,名词。

比方:用户、帖子、回帖、板块

3、标识属性

4、标识关系:

  1)一对一:两个表的主键是公共字段

  2)一对多:主键和非主键建关系

  3)多对一:非主键和主键建关系

  4)多对多:非主键和非主键建关系

5、将E-R图转成表

  1)将实体转成表,将属性转成字段

  2)假设找不到一个合适的字段做主键,我们加入一个自己主动增长列做主键。

  3)建立正确的关系





三、数据规范化





表设计出来以后,并非最合理的结构。我们须要对表进行规范化(我们通过3范式来对表进行规范化)

先满足第一范式--再满足第二范式--再满足第三范式





1NF: 确保每列的原子性

     第一范式用来规范化全部的字段,全部的字段都不可再分

注意:比方地址这个字段。假设不分类汇总、不排序。只起一个字符串的作用。这时我们不拆(反3范式)

2NF: 非键字段必须依赖于主键字段

假设一个关系满足1NF,而且除了主键以外其它列都依赖于该主键,则满足第二范式(2NF)

3NF: 消除传递依赖

在非主键字段中。假设一个字段能够推导还有一个字段,这就叫传递依赖。

四、规范化和性能的关系

1、为了满足某种商业目标。数据库性能比规范化数据库更重要

通过对给定的表中加入额外的字段,以大量降低须要从中搜索信息所须要的时间。

通过在给定的表中插入计算列(比方成绩总分),以方便查询

2、进行规范化的同一时候须要考虑数据库的性能

五、定位慢查询

找出查询速度较慢的SQL语句。

增、删、改、查

当中查询占90%,增删改共占10%

Mysql数据库一些关于状态的查询

用"show status"

指令                                                                  说明

show status                                                   查询mysql数据库的一些执行状态

show status like 'com_insert';                    显示运行了多少次插入操作

show status like 'com_update';                 显示运行了多少次更新操作

show status like 'com_delete';                    显示运行了多少次删除操作

show status like 'com_select';                    显示运行了多少次查询操作

show status like 'uptime';                             显示mysql启动了多长时间,假设时间非常长了,数据库表的存储引擎有的是myisam,这时候注意要碎片整理。

show [session | global ] status like...,假设不写,默认是会话级(session),想要查询从mysql启动一直到如今,用global。

显示慢查询

show variables like 'long_query_time'         显示慢查询的时间,默认是10秒

set long_query_time=0.5                               把慢查询的时间设置为0.5秒,以便于測试

show status like 'slow_queries'         显示慢查询的时间,默认是10秒

定位慢查询(开启慢查询日志)

一旦开启慢查询日志以后。日志文件的位置在my.ini文件里去查找,默认情况下mysql不会记录慢查询

怎样开启慢查询:

1、关闭当前mysql服务:net stop mysql

2、通过安全模式启动就会写日志。

3、关闭安全模式启动的mysql

4、把慢查询的时间设置为0.5秒,set long_query_time=0.5

5、select * from table where xx='00' ;

6、到慢查询日志中去找相应的SQL语句。

反三范式:

范式越高。数据冗余就越少,可是有时就效率就越低下,为了提高执行效率,能够适当的让数据冗余。

mysql数据库优化之表的设计和慢查询定位的更多相关文章

  1. MYSQL 数据库名、表名、字段名查询

    //查询所有表的所有字段: select * from information_schema.columns where table_name='sys_users' 效果: //查询指定表的所有字段 ...

  2. mysql数据库优化课程---11、mysql普通多表查询

    mysql数据库优化课程---11.mysql普通多表查询 一.总结 一句话总结:select user.username,user.age,class.name,class.ctime from u ...

  3. MySQL数据库优化、设计与高级应用

    MySQL数据库优化主要涉及两个方面,一方面是对SQL语句优化,另一方面是对数据库服务器和数据库配置的优化. 数据库优化 SQL语句优化 为了更好的看到SQL语句执行效率的差异,建议创建几个结构复杂的 ...

  4. mysql数据库优化课程---16、mysql慢查询和优化表空间

    mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...

  5. mysql数据库优化课程---3、数据库设计是什么

    mysql数据库优化课程---3.数据库设计是什么 一.总结 一句话总结: 就是设计各个字段及各个字段类型 1.char,varchar,text同存'ABC'的存储空间为多少? char(255): ...

  6. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. 50多条mysql数据库优化建议

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存 ...

  8. 解开发者之痛:中国移动MySQL数据库优化最佳实践(转)

    开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则 ...

  9. 30多条mysql数据库优化方法【转】

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

随机推荐

  1. Unity整合Asp.Net MVC

    先来看一下我们的解决方案 我们建立Yubay.Models项目, using System; using System.Collections.Generic; using System.Data.E ...

  2. Element UI tree 回显问题

    Part.1 问题 写项目时遇到一个棘手的问题,在做关于权限功能时,点击修改需要显示角色原本对应的权限.涉及到了 tree 组件回显,但是有一个很尴尬的问题:tree 组件只要父节点选中,那么子节点就 ...

  3. 欧拉函数 || LightOJ 1370 Bi-shoe and Phi-shoe

    给出x,求最小的y使y的欧拉函数大于等于x *解法:i).求出1e6之内的数的欧拉函数,遍历找             ii).求比x大的第一个质数——因为每个质数n的欧拉函数都是n-1 wa一次是因 ...

  4. web前端中的一些注释表达法

    1.HTML注释 <!--注释的内容--> 注释的地方(根据个人习惯可能有所不同): 结束标签的后面,这一切都是为了程序在嵌套的时候更加方便.明了,如: <div class=&qu ...

  5. 前段开发 react native tab功能

    import React, { Component } from 'react'; import { StyleSheet, Text, View, Image, } from 'react-nati ...

  6. MySQL中的事务日志

    一.事务日志的作用 事务日志在保证事务的特性的同时,提高事务的执行效率 二.事务日志的工作原理 使用事务日志时,存储引擎修改了表的数据时只需要修改其内存拷贝. 然后再将修改行为记录到持久在硬盘上的事务 ...

  7. JS 获取字符串中的url并返回其下标索引

    //获取字符串中的url极其下标索引 function getHttpUrlArray(s) { var s1 = s.match(/http.*/); if(s1 == null) { return ...

  8. jar包、war包、ear包傻傻分不清?

    在工作中,需要在jboss上deploy一个health check的war包,因此了解一下: Jar文件(扩展名为. Jar,Java Application Archive)包含Java类的普通库 ...

  9. P1027 car的旅行路线

    car的旅行路线 洛谷链接 这个题关键就是 如何把每个点表示出来,其实求出四个点的坐标后,只需要把这些点连接起来,用一遍folyed求出最短路径就好了. 代码: #include<cmath&g ...

  10. 【Ajax 2】封装Ajax的核心对象:XMLHttpRequest对象

    导读:AJAX利用一个构建到所有现代浏览器内部的对象-XMLHttpRequest-来实现发送和接收HTTP请求与响应信息.那么,XMLHttpRequest对象是怎么创建和封装的呢? 一.简介 1. ...