java数据库面试题

1.数据库集群的话,如果自动增长id产生重复如何解决?

①UUID(不排序,不推荐,但Oracal数据库可以),②设置数据库的步长

查询自增的步长:show variables like 'auto inc%'

修改自增的步长:set @@auto increment increment = 10

修改起始值:set @@auto increment offset = 5

假设有两条mysql数据库服务器,一台起始值为1另一台为2,步长为2,则

节点①:1,3,5,7                       节点②:2,4,6,8

注意:在最开始设置好了每台节点自增方式步长之后,确定好mysql集群数量后,无法扩展新的mysql,不然生成步长的规则可能会变。

2.既然想实现读写分离,如何路由到不同数据库访问?

使用mycat插件,会拦截客户端所有jdbc请求,根据sql语句判断转发不同数据库,类似于ngnix.

3.mysql数据库慢查询配置?

show query log慢查询开启状态

show query log file慢查询日志存放位置

long query time查询超过多少秒进行记录

show variables like 'show query%'查询慢查询配置

show variables like long query time查询慢查询限制时间

set global slow query log = on开启慢查询

set global long query time = 1 设置查过一秒记录

4.误区:mysql自身带有主从复制功能,mycat实现了读写分离

5.mysql主从复制流程:①从节点会开启一个IO线程获取主节点的二进制日志文件②主节点会开启一个Log dump线程,返回本地binlog文件给从节点③从节点开启sql线程执行IO线程获取到的binlog文件,所以从节点有两个线程

6.动态数据源核心配置,在spring2.0.1中引入了AbstractRoutingDataSource该类充当了DataSource的路由中介,能有运行时根据key来动态切换到真正的DataSource上,项目中需集成多个数据源分别为读和写的数据源,绑定不同dkey,采用AOP技术进行拦截业务逻辑方法进行切换。

7.myism与innodb都采用B+Tree作为索引结构,myism索引文件和数据文件是分离的,索引文件只保存数据记录的地址,而innodb在叶子节点保存了完整的数据记录。

8.索引为什么失效?

①索引无法存储null值②如果条件中有or,即使其中有条件带索引也不会使用,只能每个列都加上索引③对于多列索引不是使用的第一部分则不会使用索引④以like查询以%开头⑤如果类型为字符串,那一定要在条件中将数据用引号引用起来否则不使用索引。

发布了254 篇原创文章 · 获赞 18 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_36594703/article/details/103098173