云计算百科
云计算领域专业知识百科平台

【毕设】【mysql】mysql 我劝你不要选择安装服务--mysql 服务坏掉/忘了密码还能救出数据

更多的程序员文章收录在

【JAVA方向学习文章视频汇总】

文章目录

  • 声明:省流
  • 这个工具还有改密码的便利功能
  • 引别人(自己以前)的项目时数据库导入
    • 第一种情况
    • 很多大学生并不知道大数据到底多大算大
    • 但是:
      • MyISAM 到底还有没有存在的意义
      • COUNT(*)的速度差异
    • 两种具体的差别:
      • MyISAM
      • InnoDB
    • 第一种MyISAM 的总结
    • 第二种情况 InnoDB
      • ## 第二种情况 InnoDB的文件复制法
  • 服务卸载的问题
    • 总的结论
  • 总结及资源下载

声明:省流

如果是教学的老师要求某版本,按着老师的要求安装就好。 如果是自己学习或做毕设,你直接安装PHPStudy2018。用非服务的方式去启动。 原地址贴上来说是违规了。 还是用我自己的资源下里的安装文件吧(本文结尾)

我安装PHPStudy2018有的时候,并不是为了运行PHP的代码(当然我也有PHP的项目) 大多数的时候,仅仅是把这个当JAVA项目的数据库的便利工具来使用 在这里插入图片描述 这样就启动了。 在这里插入图片描述

这个工具还有改密码的便利功能

对于找以前的项目,毕设等等有时是巨大作用 在这里插入图片描述

引别人(自己以前)的项目时数据库导入

有的时候,自己的mysql 数据库坏了,还有的是密码直接忘掉了。但是里面有自己辛苦录进去的数据。 找到你的这个目录: 在这里插入图片描述

第一种情况

如果这个目录里是db.opt + 一大堆的frm 文件时, 恭喜你了。数据轻松拿回。把这个目录复制到另一个mysql 的相应目录下重启就可以了。 在这里插入图片描述 这就是因为MySQL有两种存储引擎 InnoDB MyISAM 这个要重点说一下:

很多大学生并不知道大数据到底多大算大

一般的AI或项目经理都会给出这样的结论: 结论 对于需要事务支持和数据完整性的应用,推荐使用InnoDB。如果你的应用主要是读操作或者对事务支持要求不高,MyISAM仍然可以是一个选择,尤其是在读密集型的应用场景中。然而,考虑到未来的可维护性和扩展性,推荐尽可能使用InnoDB。在具体实施前,建议进行基准测试以确定哪种存储引擎最适合你的特定需求和应用场景。 在MySQL中,处理百万条数据时。 同学你注意了这一条前提了么?

但是:

现在都 2025 年了,MyISAM 不都淘汰了吗? 只要有事务、有并发、有业务逻辑,请一定用 InnoDB! 你这个博主还要我们使用MyISAM ???

那为什么为什么 MyISAM 不支持事务? 那它的索引底层是怎么存的? mysql 出现的时候,难不成就用不了事务了? 如果你碰到了这样的一位面试官,你是不是心里也感觉这个人就是没事找事呢?

MyISAM 到底还有没有存在的意义

它仍然适合一些只读多、写少、数据更新不频繁的场景,比如:

历史日志归档库 报表分析类应用 临时统计表 因为它结构简单、读性能不错,行数统计快,占用空间小。 还有最关键的一点:就是数据库坏了,直接把文件复制到另一个mysql 里直接就能使用

InnoDB 是事务型存储引擎,支持: ACID 特性(原子性、一致性、隔离性、持久性) MyISAM 什么都不支持,崩了就崩了。 还记得我当年开发一个课程商城系统,学员退款时突然断电重启,MyISAM 表直接损坏。 但是问题是你使用的笔记本。 90%的情况是你忘记了数据库的密码。

COUNT(*)的速度差异

这一条非常的关键,因为你的毕设项目一定有这样的界面 在这里插入图片描述 也可能是这样: 在这里插入图片描述

MyISAM 有个优势,在没有 WHERE 条件时,SELECT COUNT(*) 非常快! 就这一条,你就赢得了毕业设计时演示的好感了。

因为它会维护一个行数的计数器,直接返回。

InnoDB 就麻烦了,它必须扫一遍表,看一共有多少行,哪怕你只是查 COUNT(*)。

所以很多时候 InnoDB 的大表 COUNT 查询很慢,要配合业务手动维护行数缓存。

两种具体的差别:

在MySQL中,处理百万条数据时,选择合适的存储引擎(如MyISAM和InnoDB)非常重要,因为它们在性能、并发性、事务支持等方面有所不同。下面我将分别介绍MyISAM和InnoDB在处理百万条数据时的特点、优势及一些优化建议。

支持的锁类型不同 InnoDB:行级锁,并发高,支持事务; MyISAM:表级锁,并发低,不支持事务。 索引结构的根本差异 InnoDB 的主索引是聚簇索引(Clustered Index),数据和主键是合在一起存储的,顺序是按主键排列。 而 MyISAM 是非聚簇索引(Non-clustered),索引和数据是分离存储的,索引文件记录的是数据文件的物理地址。

MyISAM

MyISAM是MySQL的较早存储引擎之一,它提供了良好的读取性能和表级锁定。然而,在处理大量写入操作和高并发更新时,它的表现可能不如InnoDB。

优点:

快速读取:MyISAM在读取操作上非常快,尤其是对于大量数据的查询。

表级锁:这减少了锁竞争,提高了并发性。

全文索引:支持全文索引,适用于需要全文搜索的场景。

缺点:

不支持事务:MyISAM不支持事务处理,这对于需要原子性操作的应用场景是一个限制。

崩溃恢复:在某些情况下,MyISAM可能不如InnoDB那样可靠,尤其是在崩溃恢复方面。

InnoDB

InnoDB是MySQL的默认存储引擎,提供了强大的事务支持、行级锁定和外键约束等特性。它在处理大量数据和复杂查询时表现良好。

优点:

事务支持:InnoDB支持事务处理,可以确保数据的完整性和一致性。

行级锁:减少锁竞争,提高并发处理能力。

崩溃恢复:提供了更好的数据完整性保护和崩溃恢复能力。

外键约束:支持外键,有助于维护数据的完整性。

缺点:

写入性能:在大量写入操作时,InnoDB可能不如MyISAM那样高效,尤其是在高并发写入的情况下。

优化建议 无论选择MyISAM还是InnoDB,以下是一些通用的优化策略:

索引优化:确保你的表有适当的索引,特别是在查询条件中使用到的列上。使用EXPLAIN语句来分析查询并优化索引。

分区表:对于非常大的表,考虑使用分区表(Partitioning),这可以改善查询性能和管理大型数据集的效率。

批量插入:使用批量插入(例如使用LOAD DATA INFILE)来减少插入操作的开销。

查询缓存:虽然MySQL 8.0已经移除了查询缓存,但在早期版本中,合理使用查询缓存可以减少重复查询的开销。

定期维护:定期运行OPTIMIZE TABLE来回收未使用的空间,保持表的性能。

硬件升级:增加RAM和更快的存储(如SSD)可以显著提高数据库性能。

监控和分析:使用慢查询日志、性能剖析工具(如Percona Toolkit)来监控和优化查询性能。

第一种MyISAM 的总结

这也是为什么网上的开源项目还存在着大量的MyISAM 这种格式的原因。 因为99%的人的毕设项目,对于数据库这一块不会去做任何的优化,而且还一定要使用大量的没有 WHERE 条件时,SELECT COUNT(*) 有人就会有这样的疑问,那毕设系统不支持事务,我的业务也没法写了呀?

  • 第1点感觉好象是换了这种格式之后,你的系统运行不起来了?这一点是不存在的,因为我的博客里也有着大量的项目呀
  • 第2点 那碰到错误了,事务不能回滚了。这种碰到错误都是写并发,你的毕业设计在演示的时候,只有你一个人在使用,不可能有写并发,事实上用户在少于10人的时候,这种担心根本没必要。 MyISAM 有个优势,在没有 WHERE 条件时,SELECT COUNT(*) 非常快! 而这个是实实在在的带来的优势, 就是你点击菜单介绍的时候,每个页面都会快上一些。 除非你左边不是菜单,右边不显示(用户,商品,用品,快递单号,车牌…)列表。

举一个不太贴切的例子 你知道外卖员/快递员为什么不选择汽车来送餐/送货么?现在汽车也没有那么贵,尤其是还有两人的小汽车。 是因为外卖员都穷么?

如果你选的是电动车(MyISAM),可能速度会快一点,但不能保证每次都安全送达;比如快递让别人偷了,比如中间被水淹了,比如…

如果你选的是专车(InnoDB),虽然路上会慢点,但有专人保护食物的安全。就像银行的运钞车。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

第二种情况 InnoDB

文件复制过去,能显示表名,但是打不开。 所以,网上的很多的文章说mysql 的文件复制过去就可以,这种说法可能没有那么的严谨。 在这里插入图片描述 首先: 找一个你有没有备份 (其实这种情况根本不分啥么索引方式) 使用mysqldump工具进行逻辑备份。(一般来说不是企业的环境,99%的人都不会把自己的数据这样子备份吧?) 所以,下面的命令行也只是用来面试。

# 备份数据库
mysqldump u uname p data_name > backdb.sql

# 恢复数据库
mysql u uname p data_name < backdb.sql

一般人的操作应该是:

在这里插入图片描述

## 第二种情况 InnoDB的文件复制法

文件复制到一个新mysql 库下:(后者必须是新安装的mysql ) 在这里插入图片描述 把旧的ib 开头的几个文件,也同时复制过去。 将需要迁移的数据库中data文件夹下,除了mysql,performance_schema,sys等mysql自带数据文件夹以外的文件夹,其它文件也需要覆盖。 但是并不能保证100%的成功,只能说,如果版本都对应得上,很大的机会能成功。 就在毕设的这种非生产级的项目上, 可以说MyISAM 的方式真的是占尽优势。 这也就明白了,为什么当年的论坛流行,PHP流行的时候,mysql 会创造出这种的方式出来。

  • 读量巨大!
  • 写入并发不多

服务卸载的问题

在这里插入图片描述 然后,事情就杯具了。应该说也确实是导进了导来的数据库,但是弄着弄着,两边的数据库都不能访问,具体的现象就是。 老的mysql 有服务,navicat 也能访问。(重置了root密码) 但是PHP访问不了。(这说明了新版的PHP不一定无条件连接老的不知版本的mysql ) 然后,把phpstudy 的mysql 改个端口 启动吧? 启动不了了。

选择【服务和应用程序】中的【服务】,在右侧找到【mysql】,右键,选择【停止】 在这里插入图片描述

步骤2:卸载mysql软件 可以在控制面板中卸载,把mysql相关的全部卸载掉,mysql安装包也卸载掉,一会安装的时候重新下载安装包就行 1、卸载过后删除C:\\Program Files (x86)\\MySQL该目录下剩余了所有文件,把mysql文件夹也删了 2、删除HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet002\\Services\\Eventlog\\Application\\MySQL文件夹,如果没有可以不用删除了。 3、删除C盘下的C:\\ProgramData\\MySQL 所有文件,如果删除不了则用360粉碎掉即可,该programData文件是隐藏的默认,设置显示后即可见 4、关键!!!!删除C:\\Documents and Settings\\All Users\\Application Data\\MySQL下的文件夹,一定要删,你可以直接复制粘贴,就会看到这个文件夹 5注:这步是最繁琐的也是最为关键的,很多人就是因为在这步骤中没有清理干净注册表信息,从而不能重新安装成功。 1、windows+R运行“regedit”文件,打开注册表 2、删除注册表:HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\Eventlog\\Application\\MySQL文件夹,按照这个路径一个一个打开 这样就可以重新安装MySQL软件了! ————————————————

彻底删除mysql方法

1、首先,先在服务(开始——>控制面板——>管理工具——>服务)里停掉MySQL的服务。打开控制面板-添加删除程序,找到MySQL,卸载。或者用360安全卫士来卸载也行。也可以用mysql的那个安装程序删除

2、把安装好的MYSQL卸载了,但这对于卸载MySQL来说这只是一半,还有重要的另一半是要清理注册表。我们要进入注册表在开始-运行里面输入regedit,打开注册表

3、 找到关于MYSQL的项把他们都删除,要一个项一个项的查找把他们都删除,这样在安装的时候就可以了。其实注册表里MySQL的项就是这三项: ————————————————

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Application/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Application/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application/MySQL

还有就是C:/WINDOWS 下的my.ini文件也删除!

这样,把上面的四项删除了之后,MySQL就基本卸载完全了。如果你还不放心的话,可以在C盘查找mysql,把相关的项都删除。

小插曲完了么? 当我把这些折腾完了,又重安了phpstudy2008的尝试之后,我就想,为什么mysql 没有一个自己删掉自己的服务的程序?按理说不应该呀 在这里插入图片描述 在这里插入图片描述

总的结论

如果你现的看到这篇文章,那你就改成PHPStudy 的这种启动方式吧。真的省心省力。不用的时候,还不占系统内存。

总结及资源下载

提示:这里对文章进行总结:

Java项目使用的数据库 【JAVA项目环境3】下载PhpStudy2018版本,以及免费的Navicat全套 下载地址: https://download.csdn.net/download/dearmite/90564909

JAVA项目里其它的资源见: JAVA项目环境必知必会–【大作业及毕设项目】

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【毕设】【mysql】mysql 我劝你不要选择安装服务--mysql 服务坏掉/忘了密码还能救出数据
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!