文章目录

MySQL 是世界上最流行的开源关系型数据库,GitHub 星标超过 1 万,互联网公司大大小小项目基本都在用,不管是小网站还是大型互联网公司,都能看到它的身影。
我用 MySQL 快十年了,从小项目到大 数据量场景都玩过,聊聊它到底适合什么场景,用起来感受怎么样。
MySQL 解决了什么问题
做应用开发,数据总得持久化存储吧,文件存着查询麻烦,又不好做并发控制,关系型数据库把这些都给你解决了,SQL 查询语言写起来方便,索引给你做好了,事务给你保证数据一致性。
MySQL 开源免费,不用钱就能用,社区又大,碰到问题一搜全是解决方案,中小公司不用付版权费就能用在生产环境。它性能不错,配置好了能扛住高并发,索引优化、查询优化、分库分表一套方案都成熟了,从几行数据到几千万几亿行都能处理。
基础使用例子
安装完启动服务,命令行进去建个库建个表:
sql
-- 连接数据库
mysql -u root -p
-- 创建数据库
CREATE DATABASE blog;
USE blog;
-- 创建表
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
content TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 插入数据
INSERT INTO articles (title, content)
VALUES ('Hello MySQL', 'This is my first article');
-- 查询
SELECT * FROM articles WHERE id = 1;
Python 里用 pymysql 或者 sqlalchemy 连接也很简单:
python
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='blog'
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM articles")
print(cursor.fetchone())
就这么点代码,数据就存在数据库里了,想怎么查就怎么查。
核心好用的特性
开源免费
社区版完全免费,商业版也才收点钱,中小公司直接用社区版就够了,不用花钱。
支持事务
InnoDB 引擎支持 ACID 事务,数据一致性有保证,转账、订单这些关键场景放心用。
索引丰富
B+树索引、哈希索引、全文索引,常用的索引类型都有,建对索引查询飞起来。
存储引擎可选
默认 InnoDB 适合大多数场景,追求快读可以用 MyISAM,不同场景选不同引擎。
主从复制做好了
原生支持主从复制,读写分离,一主多从架构能扛读请求,高可用性也有保障。
哪些场景用 MySQL
Web 应用业务数据,大部分网站的用户数据、商品数据、订单数据,存 MySQL 完全没问题,互联网公司几亿数据都扛得住。后台管理系统,企业内部应用,数据量不大,关系清晰,MySQL 直接用,开发快。
日志和审计数据,如果数据量不是特别大,直接存在 MySQL,查询方便,索引做好了查起来快。电商、订单、支付核心数据,事务支持好,数据一致性有保障,大部分电商公司核心数据都存在 MySQL。
MySQL 有哪些优缺点
优点真的很多,生态太成熟了,所有编程语言都有驱动,框架都支持,ORM 一集成,开发起来快。优化资料多,碰到性能问题网上一搜全是方案,从索引优化到分库分表,大家都踩过坑了,跟着走就行。稳定,这么多年生产环境验证,很少出奇葩问题,数据不容易丢,放心用。
缺点也有。大数据量上亿行之后,单库性能下降厉害,得自己做分库分表,这个工作挺麻烦的,不如一些 NewSQL 做得方便。对非结构化数据支持不好,JSON 虽然现在支持了,但不如 MongoDB 灵活,嵌套数据查起来麻烦。内存占用比 NoSQL 高一点,纯缓存场景不如 Redis 合适。
现在 MySQL 发展得怎么样
Oracle 收购之后一直在更新,现在 MySQL 8 都出了好多年,加了 CTE、窗口函数这些现代 SQL 特性,体验越来越好。
还是开源世界里关系型数据库的老大,用户最多,岗位需求也最多,做后端开发基本都要会。各种云厂商都提供托管 RDS,直接买就行,不用自己运维备份,方便得很。分支也多,MariaDB 是开源分支,兼容 MySQL,很多公司也在用,生态完全一样。
现在学 MySQL 值得吗
做后端开发,必须得学,几乎所有项目都要用,不会 SQL 和 MySQL 根本找不到开发工作。
基础用法不难,增删改查、建表建索引几天就能学会,高级优化慢慢在项目里积累就行。
学会了 MySQL,懂索引、事务、锁,面试后端开发必问这些,掌握了薪资能涨不少,太值得学了。
项目地址:https://github.com/mysql/mysql-server
,高级优化慢慢在项目里积累就行。
学会了 MySQL,懂索引、事务、锁,面试后端开发必问这些,掌握了薪资能涨不少,太值得学了。