什么是mysql数据库:关系型数据存储工具
什么是mysql数据库,它是一款开源的关系型数据库管理系统,依靠SQL语句完成数据增删改查,以数据表、行、列的结构存放结构化数据,大多数中小型网站、小程序、内部管理系统都可以选用,不适合超大规模高并发、非结构化海量数据存储场景,比如短视频平台海量文件元数据、日志实时流存储就不优先选用它。你可以在Windows、Linux、macOS系统部署,搭配PHP、Java、Python等主流开发语言,社区文档资源充足,上手门槛偏低,同时支持事务、索引、主键约束来保障数据的规整性。
mysql数据库的基础结构
mysql数据库内部采用层级组织,最外层是数据库实例,实例下可以创建多个独立数据库,每个数据库内部包含多张数据表,数据表由字段也就是列和数据行组成。字段会定义数据类型,比如整数、字符串、日期,用来限制存入数据的格式,索引依附在字段上,作用是加快查询速度,索引数量不宜过多,新增和修改数据时索引会同步更新,拖慢写入速度。主键是数据表内用来唯一标识一行数据的字段,一张表只能设置一个主键,主键的值不能重复、不能为空。
核心的SQL语句分为四类,分别负责查询、新增、修改、删除,日常开发里查询语句使用频次最高。你可以通过Navicat、DBeaver这类可视化工具连接mysql数据库,也能直接使用命令行客户端执行指令,两种方式输出的执行结果保持一致。
mysql数据库的部署与连接方式
本地部署适合学习、开发调试,服务器部署用于线上业务,云服务商也提供托管的mysql服务,不用自己维护底层系统、备份策略。连接时需要四个基础参数:数据库地址、端口号、账号、密码,默认端口是3306,线上环境建议修改默认端口,降低被扫描探测的概率。
它有多个常用版本,8.0版本是目前主流稳定版本,新增窗口函数、改进密码加密规则,5.7版本存量项目还有大量使用,不再推荐新项目直接选用5.6以及更早的版本。
| 版本 | 适用场景 | 主要特点 |
|---|---|---|
| MySQL8.0 | 新项目、线上业务 | 功能完善,安全机制更强 |
| MySQL5.7 | 存量老项目维护 | 兼容性好,社区案例多 |
| MySQL5.6 | 仅老旧遗留系统 | 不推荐新项目使用 |
mysql数据库的事务与索引使用规则
mysql数据库的InnoDB存储引擎支持事务,事务具备原子性、一致性、隔离性、持久性四个特性,转账、订单扣减这类需要多步操作同时成功或者同时回滚的业务,必须开启事务。MyISAM引擎不支持事务,查询速度较快,但出现宕机时数据损坏风险更高,现在业务开发很少选用。
索引不能随意创建,where条件里频繁用来筛选的字段适合建立索引,性别、状态这类区分度很低的字段,建立索引很难起到加速效果。一条查询语句最多可以用到一个复合索引,写复合索引时遵循最左前缀原则,字段顺序要匹配查询条件。
不要在索引字段上做函数运算,会直接导致索引失效,查询变成全表扫描。
mysql数据库的备份与恢复
mysqldump是自带的备份工具,适合中小型数据量,导出SQL备份文件,恢复时执行导入命令即可。数据量达到几十GB以上,mysqldump备份耗时较长,可选择物理备份方案。备份文件需要定期异地存放,避免服务器磁盘故障造成备份一同丢失。
主从复制是mysql数据库常用的扩容方案,主库负责写入数据,从库同步数据并承担查询请求,分担主库压力,主从之间存在短暂的数据延迟,强一致性业务不能依赖从库读取最新数据。
它不适合存储图片、视频这类大文件,文件本身建议放到对象存储,mysql数据库只保存文件访问地址。
