你好,在电视又或者显示器上中,选择可以设置里接受系统设置
企业库真包含一系列应用程序模块和核心架构。这些高复用的组件指在解决开发者解决一些约定的企业开发问题。
企业库同样可以提供高可配置的特性,使我们管理再重复一遍的工作极其太容易,或者我们很清楚的在应用形式的很多地方发生的横切关注点。除开像日志记录、缓存、十分管理等。
别外,它提供的依赖注入容器也能简单的结构和物质分解你的设计,使他们十分可实验和容易理解,帮助你创建角色极其高性能的设计和各种应用。
不耗电,恰恰相反这反到可起省电效果。
小米11反正支持什么全局120hz,先打开方法是:开发者选项把日志缓冲区大小设置为关闭,未完全适配的第三方app也会强制需要120hz启动。
我们明白,不少第三方软件导致不允许高刷新率,但想体验的过程中太容易再次出现落差,很流畅体验会大大减,而小米11要是自动打开120hz高帧率全局运行的话,那么实际体验中将有着肉眼可见的提升,流畅度方面越来越顺滑,当然耗电程度肯定会十分严重点。
参数设置追加:mysql的innodb中事务日志ib_logfile(0/1)
概念:
事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,是可以手工如何修改参数,功能调节开启几组日志来服务什么于当前mysql数据库,mysql常规顺序,循环写,每传送一个事务时,会把一些具体信息记录事务日志中(记录信息对数据文件数据可以修改的物理位置或叫做什么偏移量);
这个系列文件个数由参数innodb_log_files_in_group完全控制,若设置为4,则其它名字为ib_logfile0~3。
这些文件的写入文件是顺序、循环写的,logfile0开始写从logfile1再继续,logfile3写到一半则datafile0一直。
作用:
在系统崩溃重新启动时,作事务系统重装;在系统都正常时,每次checkpoint时间点,会将之前读取事务应用形式到数据文件中。
ib_logfile的checkpointfield
但是不但要记录checkpoint能够做到哪儿(log_checkpoint_lsn),还要资料记录都用到了哪个位置(log_checkpoint_offset)等其他信息。因此在ib_logfile0的头部安装带了空间,应用于记录这些信息。
所以就算建议使用后面的logfile,有时候checkpoint能完成后,ib_logfile0大都要更新完的。另外你会发现所谓的顺序写盘,也并不是那绝对是的
相关的一些数字
a)innodb留了两个checkpointfiled,通过注释的解释,目地能够“writealternately”
b)每个checkpintfield是需要的大小空间为304字节。(具体定义在log0log.h)
c)第一个checkpoint的起始位置在ib_logfile0的第512字节(os_file_log_block_size)处;
d)第二个在1536(3*os_file_log_block_size)字节处。
特点:
redolog只是记录所有innodb表数据的变化。
redolog仅仅记录正在执行中的dml和ddl语句。
redolog是可以作为十分down机的或介质故障后的数据恢复使用
引导出一个问题:
在m/s环境中,innodb写完ib_logfile后,服务异样关了,会不会主库能用ib_logfile重新恢复数据,而
binlog没写可能导致从库离线时少了这个事务?进而倒致主从不一致;
redo日志写入文件.ib_logfile读取当前事务自动更新数据,并标上事务准备好trx_prepare2.写入bin-log3.ib_logfile当前事务提交再提交trx_commit
完全恢复
假如ib_logfile已经写入事务准备,那么在复原过程中,会依据是什么bin-log中该事务是否需要必然可以恢复数据。
假设:1)都结束了后异样,因没有读取bin-log,从库不会同步这个事务,主库上,关机重启时,在完全恢复日志中这个事务没有commit,即rollback这个事务.2)都结束了后十分,这会bin-log早就写入到,从库会同步这个事务。主库依据完全恢复日志和bin-log,也正常了可以恢复此事务
综上所述详细解释:
bin-log写入结束,主从会都正常结束事务;bin-log也没中写入,主从库rollback事务;不可能又出现主从库不一致问题.
查找参数(全局动态和静态):
innodb_log_buffer_size
innodb_log_file_size
innodb_log_files_outside_group
innodb_log_group_home_dir
innodb_flush_log_on_trx_commit
innodb_log_buffer_size:
事务日志缓存区,可设置1m~8m,默认8m,延迟事务日志写入到磁盘,把事务日志缓存区想象形似漏斗状,会不停地向磁盘记录信息缓存的日志记录,而何时读取实际参数innodb_flush_log_as_trx_commit压制,稍后回答,关闭大的事务日志缓存,可以将求全部运行大事务日志,
暂时不贮放在事务缓存区中,无须(事务并提交前)写入文件磁盘保存,同样也能起节约磁盘空间占用;
innodb_log_file_size:压制事务日志ib_logfile的大小,范围5mb~4g;所有事务日志ib_logfile0ib_logfile1..累加大小没法达到4g,事务日志大,checkpoint会少,省掉磁盘io,只不过大的事务日志那样的话数据库panic时,复原起来较慢.
分解重组问题:修改该参数大小,会造成ib_logfile文件的大小和之前修真者的存在的文件大小不不兼容
解决在干净关了数据库情况下,彻底删除ib_logfile,而后重启数据库,会一一创建战队该文件;
innodb_log_files_across_group:db中可以设置几组事务日志,默认是2;
innodb_log_group_home_dir:事务日志存放目录,不设置中,ib_logfile0...未知在数据文件目录下
innodb_flush_log_to_trx_commit:再控制事务日志何时写盘和刷盘,不会有危险递减:0,2,1事务缓存区:log_buffer;0:最大速度三次事务缓存区可以刷新到文件系统,另外文件系统到磁盘网络同步,不过事务递交时,肯定不会触发时log_buffer到文件系统同步;2:每次来事务递交时,会把事务缓存区日志手动刷新到文件系统中去,且每秒钟文件系统到磁盘同步;1:有时候事务提交时重新登录到磁盘,最方便;
范围问题环境:0:磁盘io能力不大,不会有危险方便相对一般,无截图或剪切粘贴延迟可以不得到,如日志性业务,mysql损坏丢了1s事务数据;2:数据安全性有要求,可以不弄丢一点事务日志,不能复制延迟也是可以认可,os损坏时才很有可能丢失的数据;1:数据安全性要求的很高,且磁盘io能力相当接受业务,如充值消费,比较敏感业务;
引导出ib_logfile的读取策略
1、基本概念
a)、ib_logfile文件个数由innodb_log_files_into_group配置改变,若为2,则在datadir目录下有两个文件,下达命令从0正在,各为ib_logfile0和ib_logfile.
b)、文件为顺序写入,当都没有达到还有一个文件末尾时,会从第一个文件开始顺序复用。
c)、lsn:logsequencenumber,是一个递增的整数。ib_logfile中的隔一段时间写入操作都包涵起码1个log,每个log都内带一个lsn。在内存page修复过程中,只能大于1page_lsn的log才会被使用。
d)、lsn的保存在全局变量log_sys中。趋近于数值等于每个log的不好算内容长度。即假如新增审批的一个log长度是len,则log_sys-lsnlen.
e)、ib_logfile每次来写入文件以512(os_file_log_block_size)字节为单位。实际中写入文件函数log_group_write_buf(log/log0log.c)
f)、有时候写a盘是否flush,由参数innodb_flush_log_arrive_trx_commit完全控制。
2、log_sys介绍
log_sys是一个全局内存结构。以下只能证明几个成员的意义。
lsn
来表示早就先分配的第一个lsn的值。
written_did_all_lsn
n来表示换算巳经写盘的lsn。需要这个值是而且未必每次生成log后就写盘。
flushed_want_disk_lsn
表示刷到磁盘的lsn。需要这个值是只不过不是他有时候写盘后就flush。
buf
待写入文件的内容保存在buf中
buf_size
buf的大小。由配置中innodb_log_buffer_size做出决定,实际大小为innodb_log_buffer_size/16k*16k。
buf_next_can_write
buf中下一个要写入到磁盘的位置
buf_free
buf中实际内容的后来位置。当buf_fitbuf_next_need_write时,那说明内存中还有一个数据未写盘。
3、去相关更新
用一个最简单可以更新语句来那就证明log_sys以及ib_logfile的更新内容的过程。假设我们的更新只不属于到非索引的单独计算长度字段。
a)在bufferpool中写入文件undolog。这对一个元素单一的语句,不需要先创建战队一个undolog头。
b)在bufferpool中读取undolog的实际内容。
c)在log_sys-buf中写入bufferpage的更新内容。此处需要保存了更新完的完整信息。
d)在log_sys-buf中读取启动事务(trx_prepare)的日志
e)将c、d自动更新的log内容读取ib_logfile中。
f)在log_sys-buf中中写入事务都结束了(trx_commit)的日志
g)将f步骤的log内容写入ib_logfile中。
4、只能说明
a)成功根据上述规定所有操作时,数据文件还没有更新。
b)每次写入到log_sys-buf时而自动更新lsn和buf_free。每次写ib_logfile时同时自动更新written_can_all_lsn和buf_next_need_write;
c)每次来写ib_logfile时以512字节为整个表格,如需写入600字节,则不好算写入1k。写的最后一个文件末尾则从第一个文件重复使用。
d)从本案所涉流程看到,在a~d过程中若又出现无比关掉,因此没有写入文件到磁盘中,而整个事务决定放弃;若在e刚完成进行时直接出现十分关掉,确实事务内容早写盘,但没有再提交。在重新启动恢复的时候,突然发现这个事务还是没有提交,逻辑上整个事务决定放弃。(重启日志中会有found1preparedtransaction(s)intoinnodb字样)。在g结束后又出现异常自动关闭,则也能在重启复原中都正常并提交。
在e和f之间会写mysql的bin-log,若bin-log写完前无比自动关闭,事务不生效,bin-log写入文件成功了后,则异常重启后能够参照bin-log恢复事务的修改。
e)若不属于到索引没更新,在步骤c之后会减少索引可以更新的log。导致索引可能有merge过程,所以在merge过程中会另外增加写入文件一个log。但事务彻底递交仍在步骤g中。索引的更新而巳经写盘,并不可能并且全部丢失。