Go协程调度中,三个重要的角色: • M: Machine Thread,对系统线程抽象、封装。所有代码最终都要在系统线程上运行,协程最终也不例外。 • G: Goroutine,Go协程。存储了协程的执行栈信息、状态和任务函数等。初始栈的大小约为2~4k,理论上开启上万个Goroutine也不是问题。 • P: Processor,Go1.1版本引入,虚拟处理器
online DDL从5.6开始,不阻塞DML但是会阻塞所有的DDL,online有三种模式: INSTANT(8.0.12),INPLACE(rebuild),INPLACE(no-rebuild)
xtrabackup活跃的分为两个大版本,2.4和8.0;目前最新版本8.0.34,xtrabackup2.4使用与MySQL5.6和5.7 xtrabackup8.0s适用于MySQL8.0。这两个版本不能混用,因为MySQL8.0的redolog和数据字典发生了变化。早期版本的innobackupex,是一个软连接,用来实现对innodb引擎的备份,8.0中已经移除了,所以推荐使用8.0。
一般的方法是通过慢查询日志来查询的,MySQL 的慢查询日志用来记录在 MySQL 中响应时间超过参数 long_query_time(单位秒,默认值 10)设置的值并且扫描记录数不小于min_examined_row_limit(默认值0)的语句,能够帮我们找到执行完的慢查询,方便我们对这些 SQL 进行优化。
mongostat mongotop命令行工具用来检测mongod的运行状态
server查看hbase(main)> status hbase(main)> version创建命名空间: namespace指的是一个 表的逻辑分组 ,同一组中的表有类似的用途,相当于关系型数据库中的database 创建该命名空间的表:hbase(main):060:0> create_namespace 'test1' hbase(mai
聚合函数是将多条记录聚合为一条;而窗口函数是每条记录都会执行,有几条记录执行完还是几条。 聚合函数也可以用于窗口函数中。
• 服务器收到连接释放报文,并发出确认报文ACK=u+1,并带上自己的序列号Seq=v,此时服务端就进入了CLOSE_WAIT—_1状态。TCP服务端通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,及客户端已经没有数据要发送了,但是服务器若发送数据,客户短依然要接收。这个状态还要持续一段时间,这个就是整个CLOSE_WAIT状态持续的时间。
保护对象上的分类: 主机防火墙:针对于单个主机进行防护 网络防火墙:往往部署于网络边界,对流入以及流出的流量进行过滤 物理上的分类: 硬件防火墙:拥有经过特别设计的硬件及芯片,性能高、成本高 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低、成本低
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录,即stage为COLLSCAN。
标识符的本质:每个标识符对应一个具有数据结构的值,但是这个值不方便直接访问,我们可以通过对其对应的标识符来访问数据,标识符就是一个指代。命名规范标识符采用CamelCase驼峰命名法如果只在包内可用,就采用小驼峰命名如果要在包外可见,就采用大驼峰命名简单循环变量可以使用i、j、k、v等条件变量、循环变量可以是单个字母或单个单词,Go倾向于使用单个字母。Go建议使用更短小常量驼峰命名即可在其他语言中
Go语言采用并发同步模型教唆Communication Sequential Process通讯顺序进程,这是一种消息传递模型,在goroutine之间传递消息,而不是对数据进行加锁来实现同步访问。在goroutine之间使用channel来同步和传递数据。
IO两个阶段1、数据准备阶段:从谁被读取数据到内核空间的缓冲区。2、内核空间复制回用户空间进程缓冲区阶段。同步阻塞IO 同步非阻塞IO进程调用recvfromc操作,如果IO设备没有准备好,立即返回ERROR,进程不阻塞。用户可以再次发起系统调用(可以轮询),如果内核已经准备好数据,就开始阻塞,然后复制数据到用户空间。虽然不阻塞,但是不断的轮询,CPU处于忙等待。IO多路复用IO多路复用
每一个进程都认为自己独占所有的计算机资源。进程之间不可以随便共享数据。同一个进程内的线程可以共享进程的资源,每一个线程拥有自己独立的堆栈。
MongoDB介绍MongoDB是一种非关系型数据库,C++编写的分布式文档型号数据库,内部使用类似于JSON的bson二进制格式。支持单机、主从(废弃)、副本集、Sharding分片等多种高可用架构。具体参考 https://blog.51cto.com/oldlees/7273362驱动驱动:https://www.mongodb.com/docs/drivers/Go驱动:&nbs
应用场景逻辑结构安装部署1、系统准备2、mongodb安装创建所需用户和组创建mongodb所需目录结构上传并解压软件到指定位置设置目录结构权限设置用户环境变量启动mongodb(初始化)登录mongodb配置文件说明:mongodb的关闭方式mongodb 使用systemd管理3、mongodb常用基本操作3.0 mongodb 默认存在的库3.1 命令种类4. mongodb对象操作4.1
对象关系映射( Object Relational Mapping),指的是对象和关系之间的映射,使用面向对象的方式操作数据库。
连接数据库是典型的CS架构,服务器端被动等待客户端建立TCP连接,并在此连接上进行特定的应用层协议。但一般用户并不需要了解这些细节,这些都被打包到驱动库中,只需要简单的调用打开就可以执行协议连接到指定的数据库。 数据库的种类和产品很多,协议也很多,Go官方很难提供针对不同数据库的驱动程序,往往由各个数据库官方或第三方给出不同的开发语言驱动库。但是,为了Go语言可以提前定义操作一个数据库的所有行为(接口)和数据(结构体)的规范,这些定义在database/sql下
Golang文件操作
ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。
数据倾斜节点和槽分配不均redis-trib.rb info 127.0.0.1:6379redis-trib.rb rebalance 127.0.0.1:6379不同槽对应数据差异过大,不合理的使用hash_tagcluster countkeysinslot {slot}cluster getkeysinslot {slot} {count}集合对象包含大量元素redis-cli --big
系统:vi /etc/security/limits.conf * - nofile 600000 * - nproc 500000 echo 511 > /proc/sys/net/core/somaxconn echo never > /sys/kernel/mm/transparent_hugepage/enab
原理从5.5.3开始引入,之前的版本,主要解决RR模式下不可重复读问题和主从复制数据不一致。如果存在DDL操作获取不到元数据锁,则后续对该表的所有操作都会被阻塞。元数据锁是事务级别的,另外,如果sql语法正确,但是执行报错(比如column不存在)同样也会获取MDL锁5.7 , 8.0定位锁信息// 8.0 select * from sys.schema_table_lock_waits whe
strings.Builder、bytes.Buffer 和 []byte 的性能差距不大,而且消耗的内存也十分接近,性能最好且消耗内存最小的是 preByteConcat,这种方式预分配了内存,在字符串拼接的过程中,不需要进行字符串的拷贝,也不需要分配新的内存,因此性能最好,且内存消耗最小。综合易用性和性能,一般推荐使用 strings.Builder 来拼接字符串。
• json字段以二进制为基础存储,读取时不需要重新解析文档并且json对象的键是逻辑排序的可实现快速检索对象 • 自动验证json文档是否规范 • json可存储大字段类似BLOB/TEXT并提供原生json函数 • innodb行锁模式下,json一行存储多个属性值在一定程度上可以减轻rowlock争用
1、版本2007年9月25日,Rob Pike在一封回复邮件中把新语言命名为Go。 2009年10月30日,Go语言首次公之于众。 2009年11月10日正式开源,这一天被Go官方确定为Go语言诞生日。 Go语言也拥有了自己的吉祥物(Rob Pike夫人Renee French设计的地鼠)。Go程序员被称为 Gopher。 2012年3月28日,Go 1.0正式发布。 2015年8月19日,Go
Innodb锁
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号