摘要:1.预读会带来一个巨大的问题? 预读机制也就是从磁盘加载一个数据页的时候,也可能连带着把这个数据页相邻的其他的数据页也加载到缓存里去 举个例子,假设现在有两个空闲页,然后在加载数据页的时候也顺带把他相邻的数据页也加载到缓存里,正好每个数据页放一个空闲的缓存页,但是接下来呢,实际上只有一个缓存页被访问
阅读全文
摘要:1.哪些缓存页是脏页? 最终在内存里更新的数据,都是要被刷回磁盘的,不可能所有的缓存页都被刷回磁盘,因为有的缓存页是查询时被读取到Buffer Pool中的,从来没有被修改过,所以数据库引入了一个和free链表类似的flush链表,凡是被修改过的缓存页,都会把他的描述数据块加入到flush链表,fl
阅读全文
摘要:1.数据库启动的时候,是如何初始化Buffer Pool的? 数据库一启动就会按照你设置的Buffer Pool的大小,在操作系统里分配一块内存区域,作为Buffer Pool内存区域 当内存区域申请完毕之后,数据库就会按照默认的缓存页16kB的大小以及对应的800个字节左右的描述数据的大小,在Bu
阅读全文
摘要:1.如何配置你的 buffer pool 的大小? Buffer Pool可以看做是一个内存组件,默认的大小是128Mb,在实际生产中可以进行大小的调整 比如我们的数据库是16核32G的机器,那么你可以给Buffer pool分配2G的内存,使用以下配置: [server]innodb_buffer
阅读全文
摘要:1.除了QPS和TPS外,我们还应该观察机器的性能 如果使用10个线程去压测数据库,此时性能还很高,其实可以在sysbench继续增加线程的数量,比如使用50个线程,100个线程直到QPS和TPS上不去了,当然我们在提高线程数量的时候不要盲目的压测 2.为什么在不停的增加线程数量的时候,要密切关注机
阅读全文
摘要:1、一款非常好用的数据库压测工具上一篇文章给大家讲解了我们在压测的过程中要关注哪些东西,这一篇文章就来带着大家一步一步的利用一个工具进行数据库压测。先给大家介绍一个非常好用的数据库压测工具,就是sysbench,这个工具可以自动帮你在数据库里构造出来大量的数据,你想要多少数据,他就自动给你构造出来多
阅读全文
摘要:1.机器申请下来后要对数据库进行压测,这时你心里应该清楚,如果你申请的是8核16G的机器,就大概知道这个数据库每秒可以抗一两千请求,你申请16核32G的机器部署mysql就知道大概可以每秒抗两三千或者三四千的并发请求 2.把机器交给DBA,让他部署Mysql,接着DBA搞定这台机器上的数据库后把用户
阅读全文
摘要:1.如果你的java系统没什么并发,也就几十人,几百人用,不用考虑数据库的配置问题 如果并发高,那就要考虑了压测方案了,当这一系列做好后,才考虑开发你的java系统,去操作你的数据库,实现各种各样的业务逻辑 2.普通的java应用系统部署在机器上能抗多少并发? java系统部署的时候选用的常用的是2
阅读全文
摘要:1.mysql的binlog到底是什么东西? binlog是归档日志,他里面记录的是偏向于逻辑性的日志,比如对use表id=10这行做了更新操作,更新后的值是什么 binlog不是innoDB存储引擎特有的日志文件,是属于mysql server 自己的日志文件 2.提交事务的时候同时写入binlo
阅读全文
摘要:1.更新语句在mysql中是怎么执行的 mysql最常用的就是InnoDB存储引擎,一个系统通过一个数据库发送到mysql上,然后肯定会经过SQL接口,解析器,优化器,执行器几个环节,解析sql语句,生成执行计划,接着由执行器负责这个计划的执行,调用innoDB引擎的接口去执行。 2.innoDB重
阅读全文
摘要:1.数据库也是一个服务器,也存在数据库连接池,当数据库服务器接收到网络连接请求时,会有一个线程监听和读取这个网络请求 2.mysql内部有一个组件,SQL接口,他是一套专门执行sql语句的接口,专门执行我们发给mysql的那些增删改查语句 3.把sql语句直接交给mysql,mysql是解析不了的,
阅读全文
摘要:1.代码访问mysql数据库,是通过引入mysql的驱动jar包(mysql-connector-java),引入这个jar包才能和数据库进行连接,有了连接后才能进行数据库的crud的sql语句 2.数据库连接池是干嘛的?当多个用户同时请求这个系统的时候,我们的java系统部署在tomcat服务器上
阅读全文