1、清阐述索引的原理;
索引的本质是帮助mysql高效获取数据的数据结构,提取句子主干,索引是一种
数据结构,为了使查询的性能更好,我们会使用多种算法进行优化,索引主要是基于二叉树结构,而这种数据二叉树结构也正是索引
2、请阐述索引的分类和各种索引的使用方式;
索引类型有:1)唯一索引;2)主键索引;3)聚集索引
唯一索引是不允许其中任何两行具有相同的索引值的索引
主键索引是数据库经常有一列或列组合,其唯一标识表的每一行,该列称为表的主键,在数据库关系图中,为表定义主键将自动创建主键索引聚集索引:在聚集索引中,其中行的屋里顺序于键值的逻辑顺序相同,一个表只能包含一个聚集索引
3、请聊聊复合索引
两个或多个列上的索引被称作为复合索引,利用索引中的附加列可以缩小搜索范围,范时勇一个具有两列的索引,复合索引的结构也于电话本类似,任命由姓和名组成,电话簿首先根据姓氏进行排序,然后根据名字对相同姓氏的人进行排序,所以复合索引的创建,应该考虑列的顺序,对索引中的所有列执行所有或进队前几列做艘多复合索引很有效,而对于后面的任意搜索执行无效
4、聊聊MYSQL主从的原理?
Mysql支持单向异步的赋值,而在赋值过程中一个主服务器,而一个或多个其它服务器充当从服务器,mysql赋值基于主服务器在二进制日志中跟踪所有对数据库的更改,因此要进行主从同步,必须先在祝福器上启用二进制日志,每个从服务器接收主服务器已经记录到二进制日志的保存的更新,当一个从服务器连接主服务器的时候,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置5、MYSQL主从同步会不会有同步引起的延迟?怎么处理的?
Mysql主从同步会出现同步引起的延迟,,而针对于不同的情况处理的方法也是不同的例如:实例滚个配置过小而导致的延迟,这种延迟是由于io线程和sql 线程消耗掉了所有的io资源,所以当制度节点配置不够时,则出现延迟,解决方案是,升级制度实例规格,防止由于只读实例的规格较小导致的数据延迟,还有一个就是主库执行大事务时导致的延迟,主库执行了一条insert *** select** 非常大的插入操作,该操作产生了近几百亿的binlog日志文件传输到只读节点,进而导致只读节点出现应用binlog延迟
6、读写分离怎么实现的?
首先生产环境中药实现读写分离,就需要mysql主和mysql从服务器.
在mysql主服务器上,建立写的账号并给予相关权限, 例如一些基本的CRUD等操作,然后再程序上写个相关的方法或函数在写的时候,调用这个方法或函数,在从服务器上,建立读的账号,并给予相关权限,然后再程序上写个方法或函数,在读的时候,调用这个方法或函数
7、你们系统中数据增长最快的表是哪张?怎么优化的?
资金流水表的数据增长快
我们采用分表,不要按照时间分,按找内容的种类分。
这样程序改动就很小,只是改连接不同的表。
8、聊聊你们怎么做系统优化的?
我们的系统一般如果做优化的话,会先从索引/sql/服务器内存分配/资源竞争调整表空间/数据库集群等方面来进行优化
首先从索引方面提升性能在真对字段创建索引的人是时候,为了可以很快查询到所需要的数据,一般来说会遵循以下基本原则1)该字段是否为关键字,逐渐和外键必须添加索引,2)为经常与表进行连接的表的连接字段建立索引3)对经常与表进行连接的连接字段建立索引
第二sql语句的优化,sql语句优化的实质就是在结果正确的前提下,使用优化器可以识别的语句,充分的利用索引来减少扫描的i/o次数,尽量避免表搜索的发生,通常的步骤是:1)先查找到有问题的sql语句,优化有问题的sql语句能显著的提高数据库性能,
第三调整服务器的内存分配,DBA根据数据库的运行状况会对一些全局区的数据缓冲区和日志缓冲区以及共享池的大小进行调整
第四调整资源竞争,当多个进程对相同的资源进行申请时,就产生了竞争,调整策略是1)修改process参数,2_减少调度进行的竞争,3减少多线程服务线程竞争4:减少重做日志缓冲区的竞争,。