列、范式?——高性能Mysql(第四章笔记2)

总是不应该设置的太长的,除非每次查一定是要这么长的键内容。

转化
我们可以看到,从存储引擎到服务器层面,是用行缓冲去copy数据的,在服务器层再解码成各个列。

如果无意义的列太多,是会消耗大量的CPU资源的。

范式、反范式是什么?

教科书里很大的一个问题,就是承载着概念的词,也可以叫术语,如果没有学习过这种概念(术语),那么一个人很难知晓,这个词到底代表什么,到底是什么意思。

而这种词可能就只是一小部分人约定俗成的,不同的行业,同样的术语可能都代表不同的意思。感谢互联网,可以轻松查找这些词对应的概念,如果是以前那种网络不通的年代,那不得翻遍图书馆的书才行么。

通俗一点讲,范式就是将那些可以分表的列给分出来的这一种思想
而反范式,就是合列的这种思想

不是说全部能分的都分,全部能合的都合,并不是这样的,这是两种方向,具体的度每个人自己把握。

日常业务中应该很容易碰到这种把握,到底是合列好,还是分表好。

范式:”分表的好处就是更改的话,很方便,但是查找多表数据的话,需要多次查找,因为要拼接嘛。以时间换空间

反范式:不分表的好处,就是一次查询一张表,可以得到所有需要的数据,但是需要更改一个键的时候,需要把所有用到这个键的行给改掉。以空间换时间

没有绝对的标准,只有最合适的。

计数器表的话,用redis替代比较好,个人不太推荐在mysql上做这么频繁的操作,比较慢是真的
对ALTER TABLE的优化

这个sql语句是对表列属性的改变哦?

不一定要重建表,移动全表数据才能改变。

可以直接修改.frm文件里的属性(但是mysql不支持哦)

如果只是改默认值的话,可以的

ALTER TABLE xxxx.xxxx
ALTER COLUMN xxxx SET DEFAULT X;
hack操作

新建一个结构跟老表一模一样的表,然后用这个新的表的frm文件替换老表的frm文件。。。

只有在表结构最后加键才有效,不过具体情况需要实际操作了之后才知道,操作前,先备份好数据吧。

ps:FLUSH TABLES WITH READ LOCK记得关闭所有正在使用的表

快速创建MYISAM索引

将数据导入到MYISAM表中时,可以先禁用除唯一索引以外的索引。增加新列,再把原来的索引加进去。
主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

hack操作,咱小虾米还是不要轻易尝试吧,搞不好翻车了得不偿失,还是求稳吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rgbhi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值