Mysql当中的各种log 一、MySQL日志文件类型其中,比较重要的包括 redo log 、 undo log 和。redo log 是重做日志,提供前滚操作;undo log 是回滚日志,提供回滚操作。
MySQL-MVCC多版本并发控制 多版本并发控制,通过管理记录的多个版本,实现了数据库事务并发时的一致性读,即当前事务读取正在被其他事务更新的行时,能读到该记录被更新之前的版本。解决了读写冲突。多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准。
Java线上服务OOM及假死排查手册 SpringBoot线上服务假死,CPU内存正常,什么情况?背景开发小伙伴都知道线上服务挂掉,基本都是因为cpu或者内存不足,出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们带来不一样的服务挂掉。问题排查老规矩在集群环境中同一个服务几个节点无响应。如不及时解决会可能形成雪崩效应。优先查看服务日志是否有报错,礼貌习惯性查看服务cpu及内存情况。先复习下,若服务无报错。cpu或内存出现异常,按如下步骤排查。常规排查1、查看服务进程中线程情况或2、查看系统异常线程16进制。
Kubernetes部署练习 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整。
代码演示同类中调用@Transcation注解失效原因 Spring在扫描bean的时候,如果扫描到方法上有这些注解,那么spring会通过动态代理模式,为这个bean动态地生成一个代理类,在代理类中,会对有注解的这个方法,做一些增强处理,如给有@Transactional注解的方法开启transaction。当我们想要调用这个方法时,实际上是先调用了代理对象中被增强的方法,然后在代理对象中,又会调用我们实际的目标对象中的方法。在通过代理对象中转的这一过程中,像上边说的开启和提交transaction就实现了。
golang快速入门 附8小时快速入门语法文档版:https://www.yuque.com/aceld/mo95lb。链接如下:https://gin-gonic.com/zh-cn/docs/golang快速入门可以按照如下步骤进行。看完文档后可看gin框架,推荐看官方文档。后续可以看下context,推荐视频学习。可以按照如上过程学习基础算法结构,推荐任意视频学习网站均可。
java 逃逸分析 逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。jdk6才开始引入该技术,jdk7开始默认开启逃逸分析。‐XX:+DoEscapeAnalysis //表示开启逃逸分析 (jdk1.8默认开启)这个对象甚至可能被其它线程访问到,例如赋值给类变量或可以在其它线程中访问的实例变量。‐XX:‐DoEscapeAnalysis //表示关闭逃逸分析。
docker常用命令 systemctl start dockersystemctl stop dockersystemctl restart dockersystemctl status dockersystemctl enable dockerdocker infodocker --helpdocker 命令 --helpexample:docker run --help列出本地主机上有的镜像字段解析:REPOSITORY:表示镜像的仓库源TAG:镜像的标签版本号IMAGE ID:镜像IDCREATED:镜像创建时
java当中的16种锁 偏是指偏心,它的意思是这个锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁一直没有被其他的线程获取,则持有偏向锁的线程将永远不需要再进行同步。为了提高性能, Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。在并发环境中,每个线程会先查看此锁维护的等待队列,如果当前等待队列为空,则占有锁,如果等待队列不为空,则加入到等待队列的末尾,按照FIFO的原则从队列中拿到线程,然后占有锁。
java JMM模型 主要存储当前方法的所有本地变量(工作内存中存储着主内存中的变量副本拷贝),每个线程只能访问自己的工作内存,即线程中的本地变量对其他线程是不可见的,就算是两个线程执行的是同一段代码,它们也会各自在自己的工作内存中创建属于当前线程的本地变量,当然也包括了字节码行号指示器、相关Native方法的信息。2 :因为工作内存所更新的变量并不会立即同步到主内存,所以虽然线程A在工作内存当中已经把变量s的值更新成3,但是线程B从主内存得到的变量s的值仍然是0,从而输出 s=0。保持多个线程对共享数据操作内存的可见性。
clickhouse 快速入门 表中的数据可以按照指定的字段分区存储,每个分区在文件系统中都是都以目录的形式存在。常用时间字段作为分区字段,数据量大的表可以按照小时分区,数据量小的表可以在按照天分区或者月分区,查询时,使用分区字段作为Where条件,可以有效的过滤掉大量非结果集数据。在集群配置中,Shard标签里面配置的replica互为副本,将internal_replication设置成true,此时写入同一个Shard内的任意一个节点的本地表,ZooKeeper会自动异步的将数据同步到互为副本的另一个节点。1.2 查看表相关信息。
java性能优化及问题排查方法 cpu使用率 :CPU使用率是指CPU在特定时间段内的工作负载情况,通常以百分比表示。CPU使用率 = (1 - 空闲时间 / 总时间) * 100%cpu负载:CPU负载是指在一段时间内,CPU正在处理以及等待处理的进程数的总和交换区:磁盘上的一部分,用于当系统物理内存(RAM)被用尽时暂时存储被交换出来的数据页。磁盘IO:磁盘的输入输出操作,包括向磁盘写入数据和从磁盘读取数据。物理内存:它是计算机硬件提供的真实内存大小。
shell快速翻阅 shell英文翻译过来是外壳的意思,作为计算机语言来理解可以认为它是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的shell命令就包括lscdpwd等等。shell是站在内核的基础上编写的一个应用程序,它连接了用户和Linux内核,从而让用户能够更加便捷、高效、安全的使用linux内核,这其实就是shell的本质。使用专业术语的说法来解释,Shell其实是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。
mysql执行成本 mysql的innodb存储引擎会把数据存储到磁盘上,这时候无论怎么优化SQL,都是需要从磁盘中读取数据到内存,就是IO成本,每次读取磁盘,至少耗时0.01秒,至少读一页,innodb一个页的数据存储大小是16KB,这个磁盘的IO时间成本是1.0,这里的1.0没有单位,就是个比较值。从磁盘读到数据后要放到内存中处理数据的过程,这是CPU成本。读取后并且检测可能的where条件,这个CPU的IO时间成本为0.2,这里的1.0和0.2被称之为成本常数。
转载:mysql索引 官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯一索引等,没有特别说明,默认都是使用B+树结构组织(多路搜索树,并不一定是二叉的)的索引。看到这里,你是不是对于自己的sql语句里面的索引的有了更多优化想法呢。