常用的面试问题(二)

一、索引的使用

创建索引的情况:

1、主建自动创建唯一索引

2、频繁作为查询条件的字段应该要创建索引

3、查询中其他表与其他表关联的字段,外建关系建立索引

4、频繁更新字段,不适合创建索引

5、where条件里用不到的字段补充创建索引

6、查询中统计或者分组字段

不需要创建索引的情况:

1、表记录太少

2、经常增删的表

3、数据重复且分布平均的字段

 

 二、SQL语句的优化

1、全局匹配我最爱(就是简历复合索引,能全部用上最好)

2、最佳左前缀原则

3、不要在索引上列上做任何计算

4、存储引擎不能使用索引中的范围条件为右边的列

5、尽量使用覆盖索引,减少select*

6、mysql在使用不等于的时候索引会失效

7、is null、is not null也无法使用索引

8、like以通配符开头,会变成全表扫描(通配符要放在右边(如:like  ‘zhan%’))

9、字符串不加单引号会导致索引失效

10、少用or。用or来连接时,索引也会失效

 

三、数据库常见的瓶颈

CPU负担重:一般发生在数据装入内存和磁盘重读起数据的时候。  

 IO 负担重:装入数据远远大常见于内存容量时。

服务器的性能瓶颈

explain:计划执行

怎么玩:explain+SQL

 

四、数据库的分库分表场景优化

1、硬件优化

2、数据库调优、例如增加索引、优化慢查询

3、引入缓存、减轻数据库的压力

4、程序与数据库表优化,重构

5、读写分离或分表分库

 

五、redis持久化RDB和AOF

 Redis 持久化:

提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF.

 RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照

 AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。

 

 六Redis集群添加和删除节点(主和从)

(1)启动集群:因为集群创建一次就行,所以直接启动所有节点服务即可

(2)查看服务器的运行状态:ps -ef | grep redis

(3)登录其中一个节点,查看集群状态

(4)我们将新建两个服务,在之前搭建的集群中新增两个节点(一主一从)

            步骤一:创建7007、7008文件夹,拷贝redis.conf文件到两个文件夹下,然后进行配置文件的修改

            步骤二:启动7007和7008俩个服务并查看服务状态。

(5)先稍微看一下redis-trib脚本能怎么使用:

(6)新增一个主节点7007(Master)

            查看集群节点状态:

(7)为新节点7007分配slot槽

    步骤一:使用redis-trib命令的reshard,找到集群中的任意一个主节点,对其进行重新分片工作。

(8)在最后,我们查看一下集群状态:

(9)添加从节点(7008)到集群中

posted @ 2019-04-09 23:27  武道风清扬  阅读(184)  评论(0编辑  收藏  举报