随笔分类 - MySQL
摘要:InnoDB的聚簇索引在统一结构中保存了B-Tree索引和数据行 叶子页包含行全部数据,节点页只包含了索引列 聚簇索引的优点 可以把相关数据保存在一起,减少磁盘IO 数据访问更快,聚簇索引将索引和数据保存在同一个B-Tree中,在聚簇索引中获取数据更快 使用覆盖索引扫描的查询可以直接使用页节点中的主
阅读全文
摘要:当不需要考虑排序和分组时,将选择性最高的列放在前面通常是很好的 只用于优化where条件的查找,能够最快得过滤出需要的行,对于在where子句中只使用了索引部分前缀列查询选择性更高 创建索引需要怎么创建,需要现确定哪个列选择性更高 经验法则考虑的是全局基数和选择性 所以选择将customer_id索
阅读全文
摘要:Index merge 一定程度上可以使用表上多个单列索引定位指定的行 在MySQL5.0和更新版本中,查询能够同时使用这两个单列索引进行扫描并对结果进行合并 OR条件的union AND条件的intersection 前两种情况的union和intersection 索引合并有时候是优化结果,但实
阅读全文
摘要:报错信息 2021-09-13 09:24:03 1788 [Note] Server socket created on IP: '0.0.0.0'. 2021-09-13 09:24:03 1788 [ERROR] Can't start server : Bind on unix socket
阅读全文
摘要:密码错误 使用正确的密码 权限问题 GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "your password"; 别忘了刷新一下 FLUSH PRIVILEGES;
阅读全文
摘要:在Oracle中, 除了inner join,left join,right join,还有 full join SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table
阅读全文
摘要:MySQL锁的基本介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制(os的pv操作) 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。 如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性
阅读全文
摘要:General datadir=/var/lib/mysql 数据文件存放的目录 socket=/var/lib/mysql/mysql.sock mysql.socket表示server和client在同一台服务器 使用localhost进行连接,就会使用socket进行连接 pid_file=/
阅读全文
摘要:将表分成多个文件存储 官方地址:https://dev.mysql.com/doc/refman/5.7/en/partitioning-overview.html 分区表应用场景 表非常大以至于无法全部都放在内存中 只在表的最后部分有热点数据,其他均是历史数据 分区表的数据更容易维护 批量删除大量
阅读全文
摘要:查询慢的原因 网络 CPU IO 上下文切换 系统调用 生成统计信息 锁等待时间 优化数据访问 减少访问数据量的方式进行优化 确认应用程序是否在检索大量超过需要的数据 确认mysql服务器层是否在分析大量超过需要的数据行 是否向数据库请求了不需要的数据 查询不需要的记录 多表关联时返回全部列 总是取
阅读全文
摘要:SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) SELECT * FROM film JOIN film_actor USING (film_id) SELECT * FROM film, film_
阅读全文
摘要:索引的优点 大大减少了服务器需要扫描的数据量 帮助服务器避免排序和临时表 将随机io变成顺序io 索引的用处 快速查找匹配WHERE子句的行 从consideration中消除行,如果可以在多个索引之间进行选择,mysql通常会使用找到最少行的索引 如果表具有多列索引,则优化器可以使用索引的任何最左
阅读全文
摘要:MySQL索引长度和区分度 索引长度和区分度是相互矛盾的 索引长度太短,那么区分度就很低,索引长度加长,区分度就高,但是索引也是要占内存的 需要找到一个平衡点 比如用户表有个字段username ,要给他加索引,问题是索引长度多少合适? 如果设置索引长度为1,占内存少,但是区分度低,区分度低索引的效
阅读全文
摘要:使用索引扫描来做排序 mysql有两种方式可以生成有序的结果:通过排序操作或者按索引顺序扫描 如果explain出来的type列的值为index,则说明mysql使用了索引扫描来做排序 扫描索引本身是很快的,因为只需要从一条索引记录移动到紧接着的下一条记录 但如果索引不能覆盖查询所需的全部列,那么
阅读全文
摘要:前缀索引 有时候需要索引很长的字符串,这会让索引变的大且慢 通常情况下可以使用某个列开始的部分字符串,这样大大的节约索引空间,从而提高索引效率,但这会降低索引的选择性 索引的选择性是指不重复的索引值和数据表记录总数的比值,范围从1/#T到1之间 索引的选择性越高则查询效率越高,因为选择性更高的索引可
阅读全文
摘要:范式设计 列不可分 不能传递其他依赖 依赖主键 反范式设计 约定大于规定 主键选择 自然主键 事务属性中自然唯一标识 代理主键 与业务无关,无意义的数字 推荐使用,不与业务耦合,维护成本低 减少需求源码量 字符集选择 utf8,只能存储两个字节的汉字 所以需要设置成utf8mb4 纯拉丁字符,选择l
阅读全文
摘要:性能监控 show profile set profiling = 1; show profile SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]] type: { ALL | BLOC
阅读全文
摘要:主从复制原理 mysql复制原理 注意 MySQL主从形式 一主一从 主主复制 一主多从 多主一从 联级复制 主的配置 从服务器授权 重启主服务器的mysqld服务 mysql主从同步延时分析(mysql5.7之后不存在这些问题) mysql5.7之后使用MTS并行复制技术,永久解决复制延时问题(不
阅读全文
摘要:MySQL锁的基本介绍 MyISAM表锁 解锁,unlock tables 写阻塞原理(lock table mylock write) 读阻塞原理(lock table mylock read) MyISAM的并发插入问题 InnoDB锁 事务及其ACID属性 并发事务带来的问题 InnoDB行锁
阅读全文