- 博客(43)
- 资源 (4)
- 收藏
- 关注
原创 MySQL遍历所有表所有字段查找字符数据
工作中有一些数据查找,但是在那个库那个表那个字段中并不明确,特别是敏感字符查找,如果数据量并不大,我们可以采用遍历整个库、表中字符来查找相关数据来解决该问题。我们可以写一个存储过程来解决该问题。
2023-11-03 11:38:16
449
原创 mysql5.7 设置半同步模式
mysql5.7 gz解压后在plugin目录下已经存在 半同步的so文件了/mysql/lib/plugin目录下主库安装为 semisync_master.so从库安装为 semisync_slave.so注意:初次加载插件后,MySQL会将该插件记录到系统表mysql.plugin中,下次启动时系统会自动加载该插件。检查:select * from mysql.plugin;
2023-10-15 17:57:30
150
原创 hive 数据倾斜问题汇总
数据倾斜,即单个节点认为所处理的数据量远大于同类型任务所处理的数据量,导致该节点成为整个作业的瓶颈,这是分布式系统不可避免的问题,从本质上说,导致数据倾斜有两种原因1.任务读取大文件2.任务需要处理大量相同键的数据任务读取大文件,最常见的就是读取压缩的不可分割的大文件,而任务需要读取大量相同键的数据,这种情况下有一下4种表现形式:1.数据含有大量无意义的数据,例如空值(null),空字符串等2.含有倾斜数据在进行聚合计算时无法聚合中间结果,大量数据都需要经过shuffle阶段的处理,引
2021-06-29 16:18:58
408
原创 mysql5.7使用GTID特性搭建主从复制
GTID又叫做全局事务id(global transaction id),是已提交事务的编号,并且是一个全局唯一的编号,mysql5.6版本之后在主从复制类型上新增了GTID复制GTID由server_uuid和事务id组成,即GTID=sever_uuid:transaction_id,server_uuid 是在数据库启动过程中产生的,每台机器都不相同,uuid存放在auto.cnf文件下。而transaction_id是事务提交时由系统顺序分配的一个不会重复的序列号。GTID优点GTI
2021-06-28 13:54:47
486
原创 mysql 中锁升级问题
锁升级(Lock Escalation)是指将当前锁的粒度降低。举例来说,数据库可以把一个表的1000个行锁升级为一个页锁,或者将页锁升级为表锁。如果在数据库的设计中认为锁是一种稀有资源,而且想避免锁的开销,那数据库中会频繁出现锁升级现象。MicrosoftSQLServer数据库的设计认为锁是一种稀有的资源,在适合的时候会自动地将行、键或分页锁升级为更粗粒度的表级锁。这种升级保护了系统资源,防止系统使用太多的内存来维护锁,在一定程度上提高了效率。即使在MicrosoftSQLServer200
2021-06-28 11:27:37
697
原创 mysql 中阻塞讲解
因为不同锁之间的兼容关系,在有些时刻一个事务中的锁需要等待另一个事务中的锁释放它所占用的资源,这就是阻塞,阻塞并不是一件坏事,其是是为了确保事务可以并发且正常的运行。在InnoDB存储引擎中,参数innodb_lock_wait_timeout 用来控制等待时间(默认是50秒),innodb_rollback_on_timeout 用来设定释放在等待超时时对进行中的事务进行回滚操作(默认是OFF ,代表不回滚)。参数innodb_lock_wait_timeout是动态的,可以在mysql数据库
2021-06-28 11:16:50
299
原创 mysql 如何解决幻像问题(Phantom Problem)
在默认的事务隔离级别下,即REPEATABLEREAD下,InnoDB存储引擎采用Next-KeyLocking机制来避免PhantomProblem(幻像问题)。这点可能不同于与其他的数据库,如Oracle数据库,因为其可能需要在SERIALIZABLE的事务隔离级别下才能解决PhantomProblem。PhantomProblem是指在同一事务下,连续执行两次同样的SQL语句可能导致不同的结果,第二次的SQL语句可能会返回之前不存在的行。下面将演示这个例子,表t create tabl
2021-06-25 17:17:36
236
原创 mysql 行锁的算法 RecordLock 、GapLock 、Next-KeyLock
InnoDB存储引擎有3种行锁的算法◆RecordLock:单个行记录上的锁◆GapLock:间隙锁,锁定一个范围,但不包含记录本身◆Next-KeyLock∶GapLock+RecordLock,锁定一个范围,并且锁定记录本身Record Lock总是会去锁住索引记录,如果InnoDB存储引擎表在建立的时候没有设置任何一个索引,那么这时InnoDB存储引擎会使用隐式的主键来进行锁定。Next-KeyLock是结合了GapLock和RecordLock的一种锁定算法,在Next-KeyL
2021-06-25 16:08:09
1148
原创 mysql中 锁行方式for Update 和 lock in share mode
mysql中数据一致锁定读的实现由两种方式 for update 和 lock in share mode, 它们分别给行数据添加x锁和s锁,我们来看看它们具体咋使用,注意要锁定数据必须要先开启事务,如果不开启是不会锁定数据的。lock in share mode 共享锁共享锁之间读取进程1:start transaction;select * from sswhere ai =9 lock in share mode ;进程2:start transaction...
2021-06-25 11:18:49
1431
原创 mysql 中锁的一致性非锁定读 和 一致性锁定读
1.什么是锁锁是数据库系统区别于文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。InnoDB存储引擎会在行级别上对表数据上锁,这固然不错,不过InnoDB存储引擎也会在数据库内部其他多个地方使用锁,从而允许对多种不同的资源提供并发访问。例如 操作缓冲池中的LRU列表。删除、添加、移动LRU列表中的元素,为了保证一致性,必须有锁的介入,数据库系统使用锁是为了支持对共享资源进行并发访问,提供一致性。对于MyISAM引擎,其锁死表锁设计,并发情况下读是没问题的,但是并发插入性能就要差一
2021-06-25 10:35:12
449
原创 mysql索引Multi-Range Read Optimization(MRR)特性讲解
multi-range read optimization是5.6之后才有的,通过optimizer_switch中的两个参数来控制一个是mrr 一个是mrr_cost_based,默认这两个参数都是开启的,show variables like 'optimizer_switch%'可以通过数据库指令set optimizer_switch='mrr=on |off ,mrr_cost_based=on|off' 来进行设置比如我们将mrr_cost_based 关闭s.
2021-06-23 11:21:06
485
原创 mysql 中 分析表 检查表 优化表
mysql 提供了分析表 检查表 和优化表的语句,分析表主要是分析关键字的分部,检查表主要是检查表是否存在错误, 优化表则是消除删除或更新造成的空间浪费1.分析表 analyze tablemysql 提供了 analyze table语句分析表,analyze table 语句基本语法如下:analyze [local | no_write_to_binlog] table table_name [,table_name]local 关键字是 no_write_to_bin...
2021-06-23 11:11:36
567
原创 mysql 5.7 连接超时参数设置
mysql5.7版本中,先查看超时设置参数,我们这里只关注需要的超时参数,并不是全都讲解show variables like '%timeout%';参数解释connect_timeoutconnect_timeout指的是连接过程中握手的超时时间,在5.0.52以后默认为10秒,之前版本默认是5秒。mysql的基本原理应该是有个监听线程循环接收请求,当有请求来时,创建线程(或者从线程池中取)来处理这请求。由于mysql连接采用TCP协议,那么之前势必是..
2021-06-22 18:49:55
5680
原创 mysql5.7优化插入记录的速度
插入记录时候,影响插入速度的主要是索引,唯一性校验,一次插入记录条数等,根据这些情况,可以分别进行优化,我们来看看有哪些优化的措施myisam表优化方案1.禁用索引对于非空表,插入记录时,mysql会根据表的索引对插入的记录创建索引,如果插入大量数据,建立索引会降低插入记录的速度,为了解决这个情况,可以在插入记录之前禁用索引,数据插入完毕后在打开索引,禁用索引语句如下: alter table table_name disable keys; 其中table_name 是表名打.
2021-06-22 17:39:22
316
原创 MySQL5.7中datetime和timestamp的区别及使用
关于TIMESTAMP和DATETIME的比较一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],它可分为两部分:date部分和time部分,其中,date部分对应格式中的“YYYY-MM-DD”,time部分对应格式中的“HH:MM:SS[.fraction]”。对于date字段来说,它只支持date部分,如果插入了time部分的内容,它会丢弃掉该部分的内容,并提示一个warning。相同点: 两者都可用来表示YYYY-MM-DD HH:MM...
2021-06-22 11:14:52
1765
原创 mysql 5.7中or 是否使用索引分析
mysql 5.7中or 是否使用索引分析:or只有两个字段都又索引情况下才能正常走索引,如果一个没有就不会走索引,而是使用all进行全表扫描
2021-06-18 18:06:49
1280
原创 mysql 5.7性能调优 优化查询
show status ‘参数’先使用show status语句查询一些mysql数据库的性能参数,这些参数能给我们优化带来一些参考show status like 'connections'; 连接mysql服务器的次数show status like 'uptime'; mysql服务器上线时间(秒)show status like 'slow_queries'; 慢查询次数 show status like 'com_select'; 普通查询...
2021-06-18 17:48:06
475
原创 CentOS7.5 安装python3.7
安装python3.7.0我这里使用的时centos7-mini,centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同,可通过python --V 或 python --version 查看系统自带的python版本有一些系统命令时需要用到python2,不能卸载...
2021-06-11 18:13:20
222
原创 mysql5.7 备份、还原实战
开启二进制日志配置my.cnf添加内容[mysqld] server_id=1234 服务器标志log-bin=[on|filename] 开启日志我们可以设置为 (默认的是和data 放在一个目录下)log-bin=mysqbinLogchongqi
2021-06-11 17:57:13
528
原创 mysql Innodb关键特性之两次写 Double Write
如果说Insert buffer带给innodb存储引擎的是性能上的提升,那么double write带给innodb 存储引擎的是数据页的可靠性。当发生数据库宕机时候,innodb存储引擎可能正在写入某个页到列表中,而这个页只写了一部分,比如16K的页,只写了4K,之后就发生了宕机,这种情况下部分写失效(partial page write)。之前未使用double write技术之前曾经发生过部分写失效而导致数据丢失情况。如果发生页写失效,是否可以通过重做日志来进行恢复,这是一个办法,但是重做日
2021-06-11 17:06:53
212
原创 mysql5.7生产环境使用mysqldump建议详解
备份命令:mysqldump MySQL数据库自带的一个很好用的备份命令。是逻辑备份,导出 的是SQL语句。也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或生成备份的文件的过程。
2021-06-11 17:02:11
1695
原创 mysql生产环境闪回工具binlog2sql实战
生产环境或者测试环境难免会有误操作情况,这种情况下,一般可以使用闪回工具进行数据恢复,但一般不建议在生产随便使用,一定要保证操作正确,做好数据库备份工作安装binlog2sql
2021-06-11 16:46:51
300
3
原创 mysq5.7 Innodb关键特性insert buffer
insert buffer 是innodb存储引擎中一个关键的特性,从名字上来看它似乎是缓存池中的一部分,的确在mysql内存结构中我们看到在 innodb buffer pool中有一个insert buffer,但是它其实是和数据页是一样的,进一步说其实它是一个Btree+页,也是物理页。在innodb中表一般是又主键,并且该主键都是自增的,插入数据都是顺序的,并不需要进行磁盘随机读写,我们来创建一个表...
2021-06-11 16:13:38
155
1
原创 mysql5.7中in的使用效率问题探讨
mysql语句中经常用到in, 但从mysql老版本中经常看到使用in会导致的各种性能问题,比如in中的值如果超过100个或200个就会导致sql性能大幅下降,甚至不走索引等种种问题我们在mysql5.7中测试下,来看看该版本中in是否还存在如网上所说的问题...
2021-06-11 15:45:28
1370
1
原创 mysql5.7 索引列中null值是否影响sql走索引?
首先建议无论索引列还是其他列,都设置成非 null,通过默认值解决 null 值问题。如果把索引列一些值设置为 null,是允许的,但是写sql时候就要用到 is null 和 is not null来进行筛选数据,但这个时候是否也走索引呢? 让我们来验证下...
2021-06-11 10:18:15
888
原创 centeros 7 安装mysql8.0
centeros 7 安装mysql1.对于centeros 7.0 以上版本 想装mysql 需要先要卸载mariadbrpm -qa | grep mariadb 查看已安装的mariadb[root@maser01 mysql]# rpm -qa |grep marimarisa-0.2.4-4.el7.x86_64mariadb-libs-5.5.56-2.el7.x86_64卸载该数据库(强制卸载)rpm -e --nodeps mariadb-libs-5.5.56-
2021-06-10 19:15:27
364
1
原创 mysql5.7如何优化写入性能及相关配置说明
为了提高写入速度,我们主要从数据库日志和数据写入开始,可以将下面配置参数初始化到my.cnf 中去innodb_log_buffer_size事务日志所使用的缓冲区。InnoDB在写事务日志的时候,为了提高性能,先将信息写入Innodb Log Buffer 中,当满足innodb_flush_log_trx_commit 参数所设置的相应条件(或者日志缓冲区写满)时, 再将日志写到文件(或者同步到磁盘)中。可以通过innodb_log_buffer_size 参数设置其可以使用的最..
2021-06-10 19:04:49
607
1
原创 mysql中flush tables和flush tables with read lock详解
官方手册中关于Flush tables的介绍, Closes all open tables, forces all tables in use to be closed, and flushes the query cache. FLUSH TABLES also removes all query results from the query cache, like the RESET QUERY CACHE statement.其解析就是关闭所有已打开的表对象,同时将查询缓存中的结果清空。就是说Flu
2021-06-10 19:01:36
3233
1
原创 mysql性能优化-内存
内存的重要性内存的大小是最能直接反映数据库的性能。通过之前各个章节的介绍,已经了解到InnoDB存储引擎既缓存数据,又缓存索引,并且将它们缓存于一个很大的缓冲池中,即InnoDBBufferPool。因此,内存的大小直接影响了数据库的性能。如何判断当前数据库的内存是否已经达到瓶颈了呢?可以通过查看当前服务器的状态,比较物理磁盘的读取和内存读取的比例来判断缓冲池的命中率,通常InnoDB存储引擎的缓冲池命中率不应该低于99%...
2021-06-10 18:46:32
244
1
原创 mysql 主从复制如何使用GTID跳过错误
1.使用show slave status 查看到错误,取 last_sql_error值show slave status;2.使用last_sql_error 值到select * from performance_schema.replication_applier_status_by_workerwhere LAST_ERROR_NUMBER=1396;
2021-06-10 18:43:20
613
1
原创 mysql5.7 生产环境my.cnf 推荐配置
[client]socket=/usr/local/mysql/mysql.sockport=3306[mysqld]basedir=/usr/local/mysql/datadir=/usr/local/mysql/datasocket=/usr/local/mysql/mysql.sockdefault-storage-engine=INNODBcharacter_set_server=utf8mb4collation_server=utf8mb4_general_ci po.
2021-06-10 18:34:43
1925
1
原创 CenterOS7下 Mysql 5.7 tar.gz安装
安装新版mysql前,需将系统自带的mariadb-lib卸载[root@hadoop01 ~]# rpm -qa|grep mariadbmariadb-libs-5.5.56-2.el7.x86_64[root@hadoop01 ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64[root@hadoop01 ~]# rpm -qa|grep mariadb解压安装包 tar -zxvf mysql-5.7.24-el...
2021-06-10 17:53:28
503
1
原创 MongoDB 数据增删改操作
insertOne insertMany 插入数据方法 db.collection.insertMany( [ <document 1> , <document 2>, ... ], {writeConcern: <document>,ordered: <boolean> })参数说明:document:要写入的文档。 writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。 ...
2020-12-08 16:13:28
419
1
Microsoft SQL Server 2008 Integration Services Problem, Design, Solution.pdf
2011-12-16
flink-sql-connector-kafka-2.11-1.13.6.jar
2023-11-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅