自助外贸英文网站建设,网页设计模板html代码个人介绍,平台设计方案怎么做,太原做网站哪家好MySQL 索引是怎么实现的#xff1f; 索引是满足某种特定查找算法的数据结构#xff0c;而这些数据结构会以某种方式指向数据#xff0c;从而实现高效查找数据。
具体来说 MySQL 中的索引#xff0c;不同的数据引擎实现有所不同#xff0c;但目前主流的数据库引擎的索引都…MySQL 索引是怎么实现的 索引是满足某种特定查找算法的数据结构而这些数据结构会以某种方式指向数据从而实现高效查找数据。
具体来说 MySQL 中的索引不同的数据引擎实现有所不同但目前主流的数据库引擎的索引都是 B 树实现的B 树的搜索效率可以到达二分法的性能找到数据区域之后就找到了完整的数据结构了所有索引的性能也是更好的。
172. 怎么验证 MySQL 的索引是否满足需求 使用 explain 查看 SQL 是如何执行查询语句的从而分析你的索引是否满足需求。
explain 语法explain select * from table where type1。
173. 说一下数据库的事务隔离 MySQL 的事务隔离是在 MySQL. ini 配置文件里添加的在文件的最后添加
❝transaction-isolation REPEATABLE-READ ❞ 可用的配置值READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE。
READ-UNCOMMITTED未提交读最低隔离级别、事务未提交前就可被其他事务读取会出现幻读、脏读、不可重复读。 READ-COMMITTED提交读一个事务提交后才能被其他事务读取到会造成幻读、不可重复读。 REPEATABLE-READ可重复读默认级别保证多次读取同一个数据时其值都和事务开始时候的内容是一致禁止读取到别的事务未提交的数据会造成幻读。 SERIALIZABLE序列化代价最高最可靠的隔离级别该隔离级别能防止脏读、不可重复读、幻读。 「脏读」 表示一个事务能够读取另一个事务中还未提交的数据。比如某个事务尝试插入记录 A此时该事务还未提交然后另一个事务尝试读取到了记录 A。
「不可重复读」 是指在一个事务内多次读同一数据。
「幻读」 指同一个事务内多次查询返回的结果集不一样。比如同一个事务 A 第一次查询时候有 n 条记录但是第二次同等条件下查询却有 n1 条记录这就好像产生了幻觉。发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据同一个记录的数据内容被修改了所有数据行的记录就变多或者变少了。
174. 说一下 MySQL 常用的引擎 InnoDB 引擎mysql 5.1 后默认的数据库引擎提供了对数据库 acid 事务的支持并且还提供了行级锁和外键的约束它的设计的目标就是处理大数据容量的数据库系统。MySQL 运行的时候InnoDB 会在内存中建立缓冲池用于缓冲数据和索引。但是该引擎是不支持全文搜索同时启动也比较的慢它是不会保存表的行数的所以当进行 select count(*) from table 指令的时候需要进行扫描全表。由于锁的粒度小写操作是不会锁定全表的,所以在并发度较高的场景下使用会提升效率的。 MyIASM 引擎不提供事务的支持也不支持行级锁和外键。因此当执行插入和更新语句时即执行写操作的时候需要锁定这个表所以会导致效率会降低。不过和 InnoDB 不同的是MyIASM 引擎是保存了表的行数于是当进行 select count(*) from table 语句时可以直接的读取已经保存的值而不需要进行扫描全表。所以如果表的读操作远远多于写操作时并且不需要事务的支持的可以将 MyIASM 作为数据库引擎的首选。 175. 说一下 MySQL 的行锁和表锁 MyISAM 只支持表锁InnoDB 支持表锁和行锁默认为行锁。
表级锁开销小加锁快不会出现死锁。锁定粒度大发生锁冲突的概率最高并发量最低。 行级锁开销大加锁慢会出现死锁。锁力度小发生锁冲突的概率小并发度最高。 176. 说一下乐观锁和悲观锁 乐观锁每次去拿数据的时候都认为别人不会修改所以不会上锁但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。 悲观锁每次去拿数据的时候都认为别人会修改所以每次在拿数据的时候都会上锁这样别人想拿这个数据就会阻止直到这个锁被释放。 数据库的乐观锁需要自己实现在表里面添加一个 version 字段每次修改成功值加 1这样每次修改的时候先对比一下自己拥有的 version 和数据库现在的 version 是否一致如果不一致就不修改这样就实现了乐观锁。
177. MySQL 问题排查都有哪些手段 使用 show processlist 命令查看当前所有连接信息。 使用 explain 命令查询 SQL 语句执行计划。 开启慢查询日志查看慢查询的 SQL。 178. 如何做 MySQL 的性能优化 为搜索字段创建索引。 避免使用 select *列出需要查询的字段。 垂直分割分表。 选择正确的存储引擎。 Redis 179. Redis 是什么都有哪些使用场景 Redis 是一个使用 C 语言开发的高速缓存数据库。
Redis 使用场景
记录帖子点赞数、点击数、评论数 缓存近期热帖 缓存文章详情信息 记录用户会话信息。