新项目
公司开了一个新项目,时间又很紧。
于是我开始了996的生活, 说是996,结果这两天是119,和10:30 9。 有点难熬呀。
今天终于是看完了之制定的知识点任务。 MySql的一些知识点:
最开始的字段设计,表设计,关联表设计等;
以及数据库的三范式:
1:字段原子性,关系型数据库默认是满足第一范式的,
2.消除对主键的部分依赖,即在表中加上一个与业务逻辑无关的字段作为主键,
3.消除对主键的传递依赖, 但是在实际的操作中往往会违反第三范式。、
存储引擎的选择
一般有innodb和MyISAM, 但是一般选择innodb,mysql默认也是innodb。
两者存在的区别
innodb支持行锁,支持事物,支持外键。
MyISAM只支持表锁,也不支持事物,不支持外键。
索引
分类
唯一索引、普通索引、全文索引、主键索引
几种索引的索引方式是一样的,只不过对索引的关键字有不同的限制:
普通索引:对关键字没有限制。
唯一索引:要求记录提供的关键字不能重复。
主键索引:要求关键字唯一且不为null。
索引的存储结构
BTree
btree(多路平衡查找树)是一种广泛应用于磁盘上实现索引功能的一种数据结构,也是大多数数据库索引表的实现。 也称b-tree。
B+Tree聚簇结构
聚簇结构(也是在BTree上升级改造的)中,关键字和记录是存放在一起的。
在MySQL中,仅仅只有Innodb的主键索引为聚簇结构,其它的索引包括Innodb的非主键索引都是典型的BTree结构。
查询缓存
缓存开启,缓存大小等。
分区
分区算法:
hash 相同的输入得到相同的输出。输出的结果跟输入是否具有规律无关
key
和hash(field)的性质一样,只不过key是处理字符串的,比hash()多了一步从字符串中计算出一个整型在做取模操作。
做分区的字段必须使主键。
range
是一种条件分区算法,按照数据大小范围分区(将数据使用某种条件,分散到不同的分区中)。
list
水平分割、垂直分割
集群
主从同步,读写分离
负载均衡
算法分类:
轮询
加权轮询:按照处理能力来加权
负载分配:依据当前的空闲状态(但是测试每个节点的内存使用率、CPU利用率等,再做比较选出最闲的那个,效率太低)
部分mysql配置
慢查询日志
profile 分析日志
mysql自带的压测工具mysqlslap
并发测试、多伦测试等。
感想
得好好调整自己的心态,
要好好和同事相处,
正确处理和领导同事间的关系。
要开心的过好每一天。
