
精通Mysql
文章平均质量分 70
学习mysql
上海第一深情Alan
精通java生态圈源码
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Mysql 性能调优四:查询优化
在前面几篇中,我们介绍了如何设计最优的库表结构、如何建立最好的索引,这些对于提高性能来说是必不可少的。但这些还不够——还需要合理地设计查询。如果查询写得很糟糕,即使库表结构再合理、索引再合适,也无法实现高性能。原创 2024-07-30 21:39:44 · 671 阅读 · 0 评论 -
Mysql 性能调优三:索引设计
todo。原创 2024-07-29 21:40:00 · 390 阅读 · 0 评论 -
Mysql 性能调优二:Schema设计
这个虚假的全0值可能会导致很多问题(可以将MySQL的SQL_MODE配置为不允许使用无意义的日期,对于尚未创建满是坏数据的数据库的新应用程序来说,这是一个特别好的实践)。Mysql可以为整数类型指定宽度,例如,INT(11),这对大多数应用毫无意义:它不会限制值的合法范围,只是规定来Mysql的一些交互工具例如,MySQL命令行客户端)用来显示字符的个数。在任何具有枚举值类型的数据库中,这可能是一个值得商榷的设计决策,因为它实际上应该是一个整数,会被设计为“字典”或“查找”表的外健。原创 2024-07-29 21:26:32 · 930 阅读 · 0 评论 -
阿里Mysql最佳实践
说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。create_time,update_time 的类型均为datetime 类型, 如果要记录时区信息,那么类型设置为 timestamp。正例:where a =?and b =?order by c;索引:a_b_c正例:where a =?索引:a_b_c反例:索引如果存在范围查询,那么索引有序性无法利用,如:WHERE a > 10 ORDER BY b;索引 a_b 无法排序。原创 2024-07-28 16:29:18 · 1429 阅读 · 0 评论 -
Mysql 性能调优一:服务端
调整InnoDB缓冲池:使用 innodb_dedicated_server 这个配置会自动优化,可以使用innodb_buffer_pool_instances将缓冲池分割成多个实例,提高并发性能调整relo log日志文件大小:调整innodb_log_file_size, 确保日志文件大小适中,平衡写入性能和故障恢复时间调整relo log buffer大小:调整innodb_log_buffer_size,减少日志写入磁盘的频率,提高写入性能。原创 2024-07-27 12:59:16 · 1634 阅读 · 0 评论 -
Mysql底层原理十:Redo log
Redo log记录的是物理日志,具体就是哪个表空间,哪个数据页,哪个偏移量,改了几个字节,改成什么。redo buffer不断的往 redo log0-3刷。原创 2024-04-07 17:30:05 · 403 阅读 · 0 评论 -
Mysql底层原理九:Undo log
Undo log主要为了保证原子性,事务中的操作要么全部完成,要么什么都不做。原创 2024-04-07 17:28:47 · 419 阅读 · 0 评论 -
Mysql底层原理八:事务锁
● update的时候会加锁,会去内存中看一下这条记录有没有锁记录,如果没有就创建一个放进去,如果有的话,那就wait;在RR级别,间隙锁+行锁,RC级别,只有行锁。● 锁在update的创建,在事务提交之后释放。原创 2024-04-07 17:25:55 · 212 阅读 · 0 评论 -
Mysql底层原理五:如何设计、用好索引
全值匹配匹配左边的列匹配范围值精确匹配某⼀列并范围匹配另外⼀列用于排序用于分组这里我自己的总结:怎么判断走不走索引?可以看一下这个操作之前的数据是否是有序的,Mysql能不能快速查询,还是得一个个查询,有序的并且能够快速查询(就像快速扫描一样)肯定是能走索引的。原创 2024-04-07 13:03:45 · 512 阅读 · 1 评论 -
Mysql底层原理二:Buffer Pool
update执行一条语句的时候,假设buffer pool中没有数据,它就会去磁盘加载,这时候mysql的设计者又加了一种数据结构 insert buffer,就是说我先把 update要操作数据记录到insert buffer中,不去访问磁盘了,后续异步线程merge到磁盘 或者select的时候 merge到磁盘。● 另外,既然是缓存,那我肯定是想提高缓存的命中率的,mysql存在预读机制、全表扫描,这些会影响缓存的命中率,因为预读导致加载了很多没用的数据,全表扫描更可怕,直接填充大量无用数据。原创 2024-04-07 17:03:42 · 330 阅读 · 0 评论 -
Mysql底层原理一:事务
因为数据库操作也是并发操作,多个客户端在操作的时候,可能会存在很多问题。原创 2024-04-07 17:00:34 · 460 阅读 · 0 评论 -
Mysql底层原理七:InnoDB 行记录
CREATE TABLE 表名 (列的信息) ROW_FORMAT=⾏格式名称ALTER TABLE 表名 ROW_FORMAT=⾏格式名称Compact:Redundant:Dynamic和Compressed⾏格式这两种⾏格式类似于COMPACT⾏格式,只不过在处理⾏溢出数据时有点⼉分歧,它们不会在记录的真实数据处存储字符串的前768个字节,⽽是把所有的 字节都存储到其他⻚⾯中,只在记录的真实数据处存储其他⻚⾯的地址。另外,Compressed⾏格式会采⽤压缩算法对⻚⾯进⾏压缩。原创 2024-04-07 13:04:41 · 535 阅读 · 0 评论 -
Mysql底层原理四:B+树索引
聚簇索引,数据页主键+用户记录,目录页主键+页号二级唯一索引:数据页排序列+主键,目录页排序列+主键二级非唯一索引:数据页排序列+主键,目录页排序列+主键+页号 (非唯一的话,目录页多个主键列联合索引:数据页排序列1+排序列2+主键,目录页排序列1+排序列2+页号。原创 2024-04-07 13:02:40 · 1074 阅读 · 1 评论 -
Mysql底层原理六:InnoDB 数据页结构
CREATE TABLE 表名 (列的信息) ROW_FORMAT=⾏格式名称ALTER TABLE 表名 ROW_FORMAT=⾏格式名称Compact:Redundant:Dynamic和Compressed⾏格式这两种⾏格式类似于COMPACT⾏格式,只不过在处理⾏溢出数据时有点⼉分歧,它们不会在记录的真实数据处存储字符串的前768个字节,⽽是把所有的 字节都存储到其他⻚⾯中,只在记录的真实数据处存储其他⻚⾯的地址。另外,Compressed⾏格式会采⽤压缩算法对⻚⾯进⾏压缩。原创 2024-04-07 13:01:33 · 705 阅读 · 0 评论 -
全网最简单的mysql5.7启动教程【linux环境】
访问 MySQL 官方下载页面,找到适用于你的 CentOS 版本的 MySQL Yum 仓库,并下载新的 GPG 密钥。现在,你应该能够从远程位置使用新创建的用户访问你的 MySQL 服务器了。找到与 MySQL 相关的密钥,并使用以下命令移除它(以找到的密钥代替。首先,你可能需要移除旧的或不正确的 GPG 密钥。登录 MySQL,创建一个可以从远程访问的用户(替换。请确保使用的是最新的 GPG 密钥 URL。编辑 MySQL 的配置文件。在安装完成后,你可以在。原创 2024-03-15 12:55:53 · 908 阅读 · 0 评论