
数据库
文章平均质量分 63
菜鸟腾飞
一个正在努力奋斗的95后程序员 , 记录我学习成长的点滴
展开
-
innodb存储引擎
文章目录1.innodb存储引擎概述2.innodb体系架构2.1后台线程2.2内存1.缓冲池2.LRU list 和 Flush list 和Free list3.重做日志缓冲4.额外的内存池2.4Checkpoint技术2.5Master Thread工作方式2.5.1innodb 的master thread2.6innodb关键特性2.6.1插入缓冲 insert buffer1.inse...原创 2020-03-18 23:22:36 · 6655 阅读 · 0 评论 -
高性能mysql六.查询性能优化
文章目录6.1为什么查询速度会慢?6.2慢查询基础:优化数据访问6.2.1是否向数据库请求了不需要的数据6.2.2.mysql是否在扫描额外的记录6.3重构查询的方式6.3.1一个复杂查询还是多个简单查询6.3.2切分查询6.3.3分解关联查询6.4查询执行的基础6.4.1mysql客户端和服务端通信协议6.7优化特定类型的查询6.7.1优化count()查询6.7.4 group by 和dis...原创 2020-03-18 02:01:36 · 564 阅读 · 0 评论 -
高性能mysql四.Schema和数据类型优化
文章目录4.1选择优化的数据类型4.1.1整数类型4.1.2实数类型4.1.3字符串类型4.1.4日期和时间类型4.1.5位数据类型4.2Mysql schema设计中的陷阱4.3范式和反范式4.3.1范式优点缺点4.3.2反范式的有点和缺点4.4加快Alter table操作的速度4.4.1只修改.frm文件4.4.2快速创建mylsam索引前言:良好的逻辑设计和物理设计是高性能的基石,该篇主...原创 2020-03-18 01:58:18 · 425 阅读 · 0 评论 -
高性能mysql一.mysql系统结构和概念
文章目录1.1Mysql逻辑架构1.1.1连接管理和安全性1.1.2优化与执行1.2并发控制1.2.1读写锁1.2.2锁粒度1.3事务1.3.1隔离级别1.3.2死锁1.3.3事务日志1.3.4mysql中的事务1.4多版本并发控制1.5mysql存储引擎1.5.1Innodb存储引擎1.5.2mylsam存储引擎1.5.6转换表的引擎前言:mysql架构设计将查询处理和其他系统任务和数据的存储...原创 2020-03-18 01:54:18 · 400 阅读 · 0 评论 -
mysql redo ,undo ,binlog
MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。其中重做日志和回滚日志与事务操作息息...转载 2019-11-12 23:44:11 · 1501 阅读 · 0 评论 -
[异常]ERROR 1130: Host ’XXXXXX is not allowed to connect to this MySQL server
问题描述:Linux centos7 安装了mysql后,服务器端可以正常使用,但是用Navicat远程连接时出现ERROR 1130: Host ’XXXXXX is not allowed to connect to this MySQL server 问题 远程无权限连接!问题分析1.未开放端口 3306(默认)2.未对账户授权use mysql;select host,user...原创 2018-11-03 15:45:12 · 945 阅读 · 0 评论 -
[git] Could not read from remote repository
idea更新代码发现!!!一般出现该问题是没有权限为了查看更多信息,使用git bash 然后git pullCloning into 'your_program'...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANG...原创 2018-09-30 15:41:15 · 652 阅读 · 0 评论 -
[MySQL] update操作与and 使用---生产事故
update table set a=xx and b=xxx where …. 更新操作set之后使用and 只会执行a = xx 但是此时不会赋值为xx,而是默认值0(大多数情况字符串1) 情况 但是 mysql并不会报错!!!!!!...原创 2018-07-26 20:53:20 · 3511 阅读 · 6 评论 -
[MYSQL]删除重复数据
#把符合要求数据过滤出去,查询出来全部删除SELECT id,sku_id,city_id,storage_idFROM pro_product.p_pro_attribute p1WHERE p1.id NOT IN ( SELECT MIN(id) FROM p_pro_attribute GROUP BY...原创 2018-07-24 15:57:19 · 228 阅读 · 0 评论 -
[MySQL]三范式的理解
网上查找了一些资料,记录如下并加入自己的理解。设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。但是有些时候一昧的追求范式减少冗余,反而会降低数据读写的效率,这个时候就要反范式,利用空间来换时间。目前关系数据...转载 2018-06-19 20:11:18 · 7364 阅读 · 0 评论 -
[MySQL]插入操作的优化冲突方式
前言:在对mysql数据库进行插入的时候经常遇见,插入时主键冲突,下面我分享两种经常使用的方式 1.ON DUPLICATE KEY UPDATE 有则更新,无则插入 step1建表CREATE TABLE `base_person` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `age` int(...原创 2018-06-23 16:12:10 · 422 阅读 · 0 评论 -
[Mysql]一条语句是如何执行的?
首先看下MySQL的基本架构示意图连接器:负责与客户端进行连接(tcp),判断权限的操作.连接分为长连接和短连接,由于连接过程十分复杂,推荐使用长连接,但是如果全部一样使用长连接,会使用大量管理连接的内存,需断开连接.查询缓存:将查询结果以sql-result的形式存在内存中,高版本已经停止该功能,弊大于利,每次内容更新都会造成缓存的失效分析器:词法分析,分析sql中所代表的含义,语法分...原创 2018-11-18 15:27:34 · 356 阅读 · 0 评论 -
[Mysql] redo log 与 binlog 的区别
redo log(重做日志)和 binlog(归档日志)MySQL redo log 与 binlog 的区别什么是redo log什么是binlogredo log与binlog的区别1. 什么是redo log?redo log又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和介质失败(media failur...转载 2018-11-18 15:55:17 · 948 阅读 · 1 评论 -
[Mysql]Expalin执行计划
explain执行计划包含的信息其中最重要的字段为:id、type、key、rows、Extra各字段详解idselect查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1、id相同:执行顺序由上至下 2、id不同:如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行 3、id相同又不同(两种情况同时存在):id如果相同,可以...转载 2018-11-26 15:38:55 · 1113 阅读 · 0 评论 -
[Mysql]对三范式与反范式的个人理解
第一范式 :原子性,列不可再分第二范式: 在第一范式的基础上,存在主键,其他字段都依赖主键第三范式: 在第二范式的基础上,其他字段不能依赖其他字段反范式:牺牲空间换时间增加效率,违反第二第三范式...原创 2018-12-08 15:23:37 · 880 阅读 · 0 评论 -
[mysql]information_schema
1.information_schema是MySQL自带的一个信息数据库,其保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。2.SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表...原创 2018-12-23 16:51:05 · 188 阅读 · 0 评论 -
Mysql 索引生效问题
众所周知 , 当where条件后使用 != <> 会是索引失效但是使用 > < >= <= or时 情况是否使用索引呢答案是 可能使用 可能不使用当查询所要扫描的数据大于 总数据量的20% mysql引擎会自动优化 , 全表扫描的效率可以大于使用索引...原创 2019-05-19 12:39:39 · 1470 阅读 · 0 评论 -
Mysql插入优化
Mysql批量插入事务插入性能对比。对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,可能每天花费在数据导入上的时间就会长达几个小时之久。因此,优化数据库插入性能是很有意义的。网络上的牛人很多,总会有一些手段可以提高insert效率,大家跟我一起分享一下吧:1. 一条SQL语句插入多条数据。我们常用的插入语句...转载 2019-05-19 13:08:11 · 2719 阅读 · 0 评论 -
Mysql事务未提交造成表锁-线上事故
问题描述:ETL抽取数据库基本数据迟迟没有完成,造成下游依赖,延迟从而引起了业务功能.问题定位:Mysql数据库从数据库查询出有一堆慢查询Waiting for table flush 状态的sql基本从上可看出有DML操作或者锁表了查询是否存在事务未提交SELECT a.trx_started,a.trx_state,b.user,b.host,b.DB,b.COMMAND,b.T...原创 2019-06-17 08:23:18 · 1230 阅读 · 0 评论 -
分库分表
文章目录一.什么叫分库分表?1.1概念二.为什么要分库分表?三.切分类型3.1垂直(纵向)拆分垂直切分的优点:垂直切分的缺点:3.2水平(横向)切分水平切分的优点:水平切分的缺点:3.3水平切分的规则3.3.1按照时间区间或ID区间来切分优点缺点:3.3.2数值取模优点:缺点:四.拆分引来的问题4.1事务一致性问题4.4.1分布式事务4.4.2最终一致性4.2跨节点关联查询 join 问题4.2....原创 2019-09-15 17:13:09 · 1109 阅读 · 0 评论 -
hive错误FAILED: SemanticException [Error 10041]: No partition predicate found for
FAILED: SemanticException [Error 10041]: No partition predicate found for Alias “average_sale_num_per_7d_query:temp1” Table “procurement_forecast_warehouse_stock_daily” 2018-04-25 17:20:09 [ INFO ] ...原创 2018-04-25 18:17:21 · 9344 阅读 · 0 评论 -
Mysql常用函数
一、数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x) 返回值e(自然对数的底)的x次方FLOOR(x) 返回...转载 2018-04-11 17:48:10 · 504 阅读 · 0 评论 -
SQL优化总结---百万数据
网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 w转载 2017-11-22 16:11:03 · 313 阅读 · 0 评论 -
谈谈数据库的ACID
谈谈数据库的ACID 帅宏军一.事务 定义:所谓事务,它是一个操作序转载 2017-11-22 15:20:25 · 228 阅读 · 0 评论 -
MySQL删除有外键约束的表
删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库的所有表。当然很多自动化工具也可以做这样的事情。删除表的时候有时会遇到这样的错误消息:?1ERROR 1217 (23000): Cann转载 2017-10-15 21:17:51 · 12618 阅读 · 0 评论 -
Mysql实现级联更新删除
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、NO ACTION、SET NULL和CASCADE。其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新;CASCADE表示父表在更新或转载 2017-10-15 21:10:22 · 2608 阅读 · 0 评论 -
mysql索引与优化
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),转载 2017-10-21 22:01:51 · 243 阅读 · 0 评论 -
mysql索引快速入门
本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='css',如果要拿这条数据的话需要些的sql是 SELECT * FROM award WHERE nickname = 'css'一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描1转载 2017-10-21 21:59:59 · 328 阅读 · 0 评论 -
MySQL DECIMAL数据类型
同事问MySQL数据类型DECIMAL(N,M)中N和M分别表示什么含义,M不用说,显然是小数点后的小数位数,但这个N究竟是小数点之前的最大位数,还是加上小数部分后的最大位数?这个还真记不清了。于是乎,创建测试表验证了一番,结果如下:测试表,seller_cost字段定义为decimal(14,2)CREATE TABLE `test_decimal` ( `id` int(11) N转载 2017-10-11 20:50:17 · 13930 阅读 · 0 评论 -
mysql字段每个类型长度大小与建表的类型长度
在创建数据库表时,例如create table user(id int(4) primary key ,name varchar(20),pwd varchar(20));括号里的数字叫数据的宽度,我们不能一概而论,因为不同的数据类型对宽度的处理也不一样:1、整数类型,这里显示的宽度和数据类型的取值范围是没有任何关系的,显示宽度只是指明Mysql原创 2017-09-25 19:12:44 · 32115 阅读 · 0 评论 -
mysql视图的简单介绍
阅读目录什么是视图视图的特性视图的作用使用场合视图实例1-创建视图及查询数据操作视图实例2-增删改数据操作其它什么是视图通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图的特性视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟转载 2017-11-22 18:06:21 · 340 阅读 · 0 评论 -
数据库事务的隔离机制和四大特性
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一转载 2017-12-03 18:25:57 · 522 阅读 · 0 评论 -
Mysql索引Btree 和hash
索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引;而Mermory默认的索引是Hash索引。Hash索引所谓Hash索引,当我们要给某张表某列增加索引时,将这张表的这一列进行哈希算法计算,得到哈希值,排序在哈希数组上。所以Hash索引可以一次定位,其效率很高,而转载 2018-01-21 13:39:06 · 881 阅读 · 0 评论 -
mybatis解决批量更新阻塞
这是mybatis批量更新的两种写法,第二种采用的是mysql的语法 UPDATE test set username=#{item.username}, password=#{item.password}, u_t=#{item.u_t}, c_t=#{item.c_t} ...原创 2018-04-10 16:32:41 · 3479 阅读 · 0 评论 -
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1537620 > 1048576).
C:/Program Files/MySQL/MySQL Server 5.5/ 查询mysql安装目录查看目前配置 show VARIABLES like ‘%max_allowed_packet%’;显示的结果为:+——————–+———+ | Variable_name | Value | +——————–+———+ | max_allowed_packet | ...原创 2018-03-30 16:44:38 · 304 阅读 · 0 评论 -
mybatis批量更新出现he error occurred while setting parameters
当你更新一条时,不会发生问题,但是执行多条就出现了错误 原因是mysql 配置jdbc:driver 应该添加&allowMultiQueries=true url:jdbc:mysql://localhost:3306/mei?characterEncoding=utf8&allowMultiQueries=true...原创 2018-03-30 15:46:11 · 4889 阅读 · 1 评论 -
mysql避免全表扫描
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引: .尝试下面的技巧以避免优化器错选了表扫描:· 使用ANALYZE TABLE tbl_name为扫描的表更新关键字分布。· 对扫描的表使用FORCE INDEX告知MySQL,...转载 2018-03-24 16:52:50 · 4331 阅读 · 0 评论 -
Mysql事物锁等待超时 Lock wait timeout exceeded; try restarting transaction
工作中同事遇到此异常,查找解决问题时,收集整理形成此篇文章。问题场景问题出现环境: 1、在同一事务内先后对同一条数据进行插入和更新操作; 2、多台服务器操作同一数据库; 3、瞬时出现高并发现象;不断的有一下异常抛出,异常信息:org.springframework.dao.CannotAcquireLockException: ### Error updating转载 2018-01-29 12:31:09 · 943 阅读 · 0 评论 -
MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
MySQLInnoDB支持三种行锁定方式:l 行锁(RecordLock):锁直接加在索引记录上面,锁住的是key。l 间隙锁(GapLock):锁定索引记录间隙,确保索引记录的间隙不变。间隙锁是针对事务隔离级别为可重复读或以上级别而已的。l Next-Key Lock :行锁和间隙锁组合起来就叫Next-KeyLock。 默认情况下,InnoDB工作在可重复读转载 2018-01-29 12:32:24 · 2612 阅读 · 0 评论 -
mysql 查询数据大小
1. 命令行方式前言介绍: 要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。 show databases; (查看有多少 database, 也叫做table schema; 有点串用)1.1 查看单个database(或是table schema)占用的大小[sql] view plain copy print?select sum(DATA_L转载 2018-01-22 14:20:37 · 1720 阅读 · 0 评论