mysql优化

数据库优化包括哪些方面:
数据库的优化是一个综合型的技术,并不是通过某一种方式让数据库效率提高很多,而是通过多方面的提高,从而使数据库效率提高很多。
1.数据库表的设计合理化(3范式)
2.sql语句的优化
3.给表添加合适的索引(如何使用索引)
4.分表技术(水平分隔,垂直分隔)
5.定时清除垃圾数据,定时进行碎片处理
6.多用存储过程和触发器
7.对mysql配置进行一些优化
8.读写分离
9.mysql服务器硬件是否要升级

-----------------------------------------------------数据库的设计----------------------------

  1. 数据库的设计
    良好的数据库:节省存储空间、保证数据的完整性
    糟糕的数据库:数据冗余、存储空间的浪费、产生数据不完整
    设计数据库的步骤:
    1.充分了解需求
    2.标识实体(具体存在的对象 名词)
    3.标识属性
    4.标识关系
    在这里插入图片描述
    实体是名词,有上图的需求中,我们标识出以下实体(用户、发帖的帖子、回复的帖子、板块信息)。每个实体在今后都相当一个表。实体肯定有属性的
    标识属性:在这里插入图片描述
    标识关系:
    表与表之间的关系:
    (1)一对一:两个表的公共字段都是主键
    例如:
    学生表:|学号(主键)|姓名 |性别
    成绩表:|学号(主键)|成绩|
    (2)一对多:主表的一条记录对应从表的多条记录,那这两个表就是一对多的关系。即两个表的公共字段是主键和非主键的关系;主表的学号是主键,从表的学号不是主键可以重复。
    例如:
    学生表:|学号(主键)|姓名 |性别
    成绩表:|id(主键)|学号|成绩
    | 1 | 101 |56
    | 2 | 101 |59
    | 3 | 101 |80

(3)多对一:两个表的公共记录是非主键和主键的对应关系。
(4)多对多:非主键和非主键的对应关系

一个实体一张表,一个属性对应一个字段
如何将E-R图转换为表:
@将实体转为对应的表,将各属性转成字段
@每个表都要有个主键,需要注意的是:没有主键的表(主键应该是不能重复不能为空不能随意改变的),即找不到合适的字段做主键的表,就添加ID编号列,它没有实际含义,用于主键或外键。例如用户列表中的添加的UID列,板块表中添加的SID列,发帖表和跟帖表中的’TID’列
@在表之间建立主外键,体现实体之间的映射关系
在这里插入图片描述
接着是数据的规范化:
表设计出来以后并不是最合理的结构,还需要对表进行规范化,通过三范式对表进行规范化。
先满足第一范式再满足第二范式最后再满足第三范式
第一范式:确保每列的原子性
第一范式用来规范化所有的字段,所有的字段均不可再分
第二范式:非键字段必须依赖于键字段
第二范式把一个表分成主键和非主键两个部分,所有的非主键字段必须依赖于主键,这样才说明一个表在描述一件事情。
第三范式:消除传递依赖
第三范式约束的是非主键字段。
反三范式:不遵循三范式的情况
在这里插入图片描述
邮寄地址:福建省厦门市集美区乐安南里100号
一个邮寄地址都要拆分的话就需要3个字段
按实际情况考虑,将来如果不需要排序、分类汇总(如根据省份来分类汇总),仅仅起一个字符串的作用,这时我们不拆分就按一个字段使用。(反三范式)

在这里插入图片描述
假设主键是订单编号。该表满足第一范式。
非主键是不是依赖于主键,即非主键跟主键是否有关系。
产品编号跟订单编号有关系吗?没有,产品出产,产品编号出来的时候,订单编号还不知道呢,所以产品编号和订单编号无关,两者不能放在一个表里。订购日期与订单编号是有关系的。价格与订单编号有没有关系,1号订单卖这个价格,2号订单还是这个价格,价格和订单编号没有关系,价格与产品编号有关的。所以这个表不符合第二范式。

第三范式:
表一: |学号 |姓名 |
|1 |Tom |

表二: | id |学号 |姓名 |成绩 |
|1 |1 |Tom |123 |
|2 |1 |Tom |124
表二里:通过学号就可以推出姓名,这是传递依赖,姓名这一列是不需要存在的。这个表不符合第三范式。就是说姓名和学号只需要放一个就可以了。传递依赖必须在非主键字段中。如果一个字段可以推导出另一个字段,这就叫传递依赖。

思考:通过学号推出姓名,这是传递依赖吗。(错的)
只要当学号不是主键,那这句话才是对的。

在这里插入图片描述
在这里插入图片描述
判断一个表是否可以存入数据库,简单粗暴的做法是看它能否进行增、删、改。
增:假设新入职一名员工叫张三,因为是新入职的所以没有工程号和工程名称,这两个字段不能为空。
删:李思岐和齐光明辞职了,这两条数据被删掉后,发现工程号A1和工程名称花园大厦就没了,再也找不到了。不可以!!
改:假设李思岐当工程师了,把职务改成工程师后,价格没有跟着改,不可以!!!

在这里插入图片描述
满足二范式:
在这里插入图片描述
职务可以推出小时工资率,不满足第三范式在这里插入图片描述

数据库的分类:关系型数据库(mysql、oracle、sql sever、db2)
非关系型数据库:(面向对象的)
Nosql数据库:MongoDB(面向文档)

反三范式:范式越高,数据冗余越少,但是有时候效率越低下,为了提高效率,可以适当使得数据冗余。

------------------------------------------END----------------------------------------------------
----------------------------------sql语句的优化-----------------------------------------------
sql语句优化很简单,关键是你要找到那个sql语句需要优化
重点是:定位慢查询
增、删、改、查
在整个数据库里增删改占10%
查询语句占90%

mysql数据库一些关于状态的查询:
show status 查询mysql数据库的一些运行状态
show status like ‘com-insert’;查看mysql执行了多少次插入
show status like ‘com-update’;
show status like ‘com-delete;
show status like ‘com-select’;
show [session|global]status like ‘com-select’;
默认是session会话级的,关闭mysql再打开后,之前的就消失了。重新计算。
要想查询从mysql启动到现在的话用global。
show status like 'uptime’查看你这个数据库启动多长时间了,如果时间很长了,数据库的存储引擎又是myisam就要注意碎片整理。

显示慢查询
show variables like ‘long_query_time’;显示慢查询的时间,默认情况下10秒是一个慢查询
set long_query_time=0.5;设置慢查询的时间为0.5秒以便测试
show status like ‘slow_queries’;显示慢查询的条数
如何使用慢查询:
首先连上数据库、设置慢查询时间、让很多人上网测试点击、看慢查询多不多,如果慢查询很多那么你的方向是对的。

定位慢查询(开启慢查询的日志)
一旦开启慢查询日志后,日志文件位置在mysql数据库的配置文件my.ini中去查找datadir,在默认情况下我们的mysql是不会记录慢查询的。
如何开启记录慢查询的步骤:
1.关闭mysql服务
net stop mysql
datadir=路径,这则个路径里有mysql的bin文件什么的,bin里面有mysql.exe,和mysqld.exe这两种文件,一个是客户端,一个是服务器端,mysql.exe就是用来连接服务器的。
2.cd mysql的bin文件夹:
mysqld --safe-mode --slow-query-log
进入安全模式,开启慢查询日志
凡事安全模式开启的服务,在windows的service.msc查看服务时,mysql服务显示的是未启动的。
所以在安全模式下关闭mysql服务,用net stop mysql是不起作用的。
而且在安全模式下开启服务后,在mysql文件夹里的data文件夹下多了一个SUN.slow.log文件
那么安全模式下如何关闭mysql服务:输入mysqladmin -uroot -p** shut down

在这里插入图片描述
在这里插入图片描述

该文章是看视频留下的笔记:https://www.bilibili.com/video/av60554238?from=search&seid=1714023897279949356

在园区网建设过程中,我们常常面临诸多实际挑战,例如网络设计、IP规划、成本控制以及项目管理等。而名为“园区网的真实案例.zip”的压缩包文件提供了大量实用资源,包括真实园区网案例、综合实验拓扑图、相关脚本和项目需求分析等,这些资料对于理解和实践园区网建设具有重要意义。我们重点关注其中的“园区网综合实验”部分。 园区网是在学校、企业或政府机构等相对封闭区域内构建的网络,旨在为区域内用户提供高效、安全的数据通信服务。综合实验则是为了模拟真实环境,帮助学习者掌握园区网设计的关键技术和步骤,通常涵盖网络设备选择与配置、VLAN划分、路由协议应用、QoS策略设定以及安全防护措施等内容。压缩包中的“最终”文件可能包含了项目实施的最终成果,如经过验证的网络设计方案、配置脚本或项目总结报告,这些资料有助于我们将理论知识转化为实际可执行的方案。 “命令”文件则可能包含了用于配置网络设备的CLI指令,涉及交换机和路由器的基本配置,如VLAN设置、端口安全、静态路由或动态路由协议(如OSPF、RIP等)。通过研究这些命令,我们可以学习如何根据不同场景正确配置网络设备,以满足业务需求。 IP规划是园区网建设中的关键任务,合理的IP规划能够避免地址冲突,便于管理和维护。案例中可能会展示如何根据园区规模、功能区划分及未来扩展需求制定合适的IP地址策略。成本控制同样重要,园区网建设不仅涉及设备购置费用,还包括安装、运维、升级等长期成本。案例可能探讨如何在满足功能需求的同时,选择性价比高的设备,优化布线方案,并通过节能技术降低运营成本。 项目总结则是对整个实施过程的回顾,涵盖遇到的问题、解决方案、经验教训及改进点,对提升项目管理能力和问题解决技巧非常有帮助。这个压缩包的内容全面覆盖了园区网设计、建设和管理的多个方面,是学习和实践网络技术的宝贵资源。通过深入研究这些材料,我们可以提升网络规划和实施能力,更好
内容概要:本文档《Grafana运维指南:从入门到精通》详细介绍了Grafana这一开源度量分析和可视化工具的各个方面。首先解释了Grafana在数据监控和分析中的重要性,强调其开源、可视化、多数据源支持、告警功能、灵活的仪表盘管理和丰富的插件生态系统等特点。接着,文档逐步讲解了Grafana的安装与配置,包括系统准备、初始配置和数据源配置等步骤。随后,深入探讨了数据源管理、仪表盘操作、插件使用等核心功能,提供了详细的配置和使用指南。最后,文档介绍了性能优化、安全管理、日志分析等日常运维要点,并通过一个实际案例展示了Grafana在大型电商平台运维中的应用价值。 适用人群:适用于运维人员、系统管理员、开发人员以及任何需要进行数据监控和分析的专业人士,尤其是那些对Grafana有一定了解或有兴趣深入了解的人群。 使用场景及目标:①帮助用户掌握Grafana的安装配置和基本使用方法;②指导用户如何整合多种数据源,创建和管理仪表盘;③提供性能优化、安全管理等方面的建议,确保Grafana在实际应用中的高效稳定运行;④通过实际案例分享,展示Grafana在复杂业务环境中的应用效果,提升用户对Grafana的理解和应用能力。 其他说明:本文档不仅涵盖了Grafana的基础知识和技术细节,还结合实际案例,帮助读者更好地理解和应用Grafana。建议读者在学习过程中结合实际操作,通过实践加深对Grafana的理解。此外,文档鼓励读者参与社区交流,分享经验和心得,共同进步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值