MyISAM

Activiti7整合SpringBoot2.2.7+JPA(Hibernate)+Mysql8.0多数据源配置

倖福魔咒の 提交于 2020-08-10 06:47:58
解决环境搭建中的问题(过程记录) 1、数据源的创建 @Configuration public class AuditDatasourceConfig extends AbstractProcessEngineAutoConfiguration { @Bean @Primary @ConfigurationProperties ( prefix = "spring.datasource.act" ) @Qualifier ( "activitiDataSource" ) public DataSource activitiDataSource ( ) { return DataSourceBuilder . create ( ) . build ( ) ; } @Bean @ConfigurationProperties ( prefix = "spring.datasource.ihrm" ) @Qualifier ( "ihrmDataSource" ) public DataSource ihrmDataSource ( ) { return DataSourceBuilder . create ( ) . build ( ) ; } } 2、多数据源的持久化配置 @Configuration @EnableJpaRepositories ( basePackages =

关于sql

核能气质少年 提交于 2020-08-10 06:18:24
1. InnoDB支持事务, MyISAM不支持; 2. InnoDB支持外键, 而MyISAM不支持; 3. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的 MyISAM是非聚集索引, 也是使用B+Tree作为索引结构, 索引和数据文件是分离的, 索引保存的是数据文件的指针, 主键索引和辅助索引是独立的 InnoDB的B+树主键索引的叶子节点就是数据文件, 辅助索引的叶子节点是主键的值; 而MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的地址指针 4. InnoDB支持表、行(默认)级锁, 而MyISAM支持表级锁 InnoDB的行锁是实现在索引上的, 而不是锁在物理行记录上. 潜台词是, 如果访问没有命中索引, 也无法使用行锁, 将要退化为表锁 8、InnoDB表必须有主键(用户没有指定的话会自己找或生产一个主键), 而Myisam可以没有 9、Innodb存储文件有 .frm. ibd, 而Myisam是 .frm .MYD .MYI Innodb:frm是表定义文件,ibd是数据文件 Myisam:frm是表定义文件,myd是数据文件,myi是索引文件 索引是帮助MySQL高效获取数据的排好序的数据结构 B-Tree 叶节点具有相同的深度,叶节点的指针为空 所有索引元素不重复 节点中的数据索引从左到右递增排列 B

MySQL 之数据库优化

折月煮酒 提交于 2020-08-10 03:07:36
不管对于哪种服务,对于其优化,无非是从两个方面着手,第一个是对于硬件方面的优化,第二个是对系统以及服务本身的优化。 1、查询连接MySQL服务器的次数 mysql> show status like 'connections'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Connections | 3 | +---------------+-------+ 1 row in set (0.01 sec) 2、查询MySQL服务器的运行时间 mysql> show status like 'uptime'; #单位为秒 +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 158 | +---------------+-------+ 1 row in set (0.00 sec) 3、查询操作的次数 mysql> show status like 'com_select'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com

【MySql面试篇】我以为我对MySql很了解,直到我面试了字节跳动

帅比萌擦擦* 提交于 2020-08-09 22:37:49
【干货预警,关注收藏才有好姿势阅读哦~】 作者寄语 悟空来到字节跳动,在静待,此时一位长发飘飘的面试官走来。悟空心里想:哎啊,今天遇到个美女面试官,可要好好表现了! 面试官:悟空,我看你简历上写了熟练掌握MySql和MySql的调优是吧? 悟空:是的,面试官。 面试官:说一下你在项目中如何使用MySql的? 悟空:增删改查,没了。 面试官:如何调优的你是? 悟空:加索引,没了。 面试官:我们公司的门你知道在哪里吧,用我送你吗? 哈哈,上面场景是开玩笑的当然,言归正传,大家如果真遇到这种问题如何回答?数据库是如何调优的?或者说大家可能都清楚加索引是数据库调优方法之一,但是关于索引又知道多少呢?下面我们一起进入主题 面试开始 面试官:说一下in关键字和exists关键字吧 我:好的,in关键字尽量用在内表小的地方,exists关键字用在外表小的地方,如果用not in ,则是内外表都全表扫描,无索引,效率低,可考虑使用not exists,也可以考虑用连接来优化。(内心OS,这能难得到我?) 接下来分析:in关键字是把外表和内表做hash连接,先查询内表,再把内表的结果和外表匹配,对外表使用索引(外表效率高,可以用大表),而内表都需要查询,使用in关键字可以加快效率。exists关键字是对外表做loop循环,每次循环对内表进行查询(对内表可以使用索引,查询效率高,可以用大表)

MySQL数据库应用全解

不羁的心 提交于 2020-08-09 20:24:07
MySQL的存储引擎 常用引擎的区别 mysql有三种存储引擎分别为 三种存储引擎的区别 如何选择存储引擎 数据库的五种分类 DDL(Data Definition Language)数据定义语言 DML(Data Manipulation Language)数据操作语言 **DQL(Data Query Language) 数据查询语言** sql执行先后问题 内连接 外连接 子查询 查询实际应用 DCL(Data Control Language)数据控制语言 TCL(Transaction Control Language) 事务控制语言 事务特性 事务的隔离性 MySQL数据库的隔离级别 数据库慢查询日志 数据库的索引 索引的创建原则 索引的失效情况 索引的数据结构 有哪些数据结构及特点 MySQL中的B+Tree MySQL函数 字符串函数 日期函数 数据函数 高级函数 case表达式【相当于java中swtich语句】 if表达式 cast(显示)类型转换【了解】 数据库的优化 常用引擎的区别 mysql有三种存储引擎分别为 InnoDB 、MyiSAM、Memory 三种存储引擎的区别 InnoDB MyiSAM Memory mysql5.5之后默认的存储引擎 mysql5.5之前默认的存储引擎 内存存储引擎(很少用到) 支持事务 不支持事务 支持外键

MySQL 快速删除大量数据(千万级别)的几种实践方案——附源码

北城余情 提交于 2020-08-09 17:18:33
笔者最近工作中遇见一个性能瓶颈问题,MySQL表,每天大概新增776万条记录,存储周期为7天,超过7天的数据需要在新增记录前老化。连续运行9天以后,删除一天的数据大概需要3个半小时(环境:128G, 32核,4T硬盘),而这是不能接受的。当然如果要整个表删除,毋庸置疑用 TRUNCATE TABLE 就好。 最初的方案(因为未预料到删除会如此慢),代码如下(最简单和朴素的方法): delete from table_name where cnt_date <= target_date 后经过研究,最终实现了飞一般(1秒左右)的速度删除770多万条数据,单张表总数据量在4600万上下,优化过程的方案层层递进,详细记录如下: 批量删除(每次限定一定数量),然后循环删除直到全部数据删除完毕;同时 key_buffer_size 由默认的8M提高到512M 运行效果: 删除时间大概从3个半小时提高到了3小时 (1)通过 limit (具体size 请酌情设置) 限制一次删除的数据量,然后判断数据是否删除完,附源码如下(Python实现): def delete_expired_data(mysqlconn, day): mysqlcur = mysqlconn.cursor() delete_sql = " DELETE from table_name where cnt_date<='

事务隔离级别、锁、索引、存储引擎

一曲冷凌霜 提交于 2020-08-09 13:31:57
1.隔离级别 1.1未提交读(read uncommit) RU 这是 最低级别的隔离等级 : 在这种隔离级别下,可以读取未提交的事务修改/更新到的数据, 基本无数据库会选择该隔离级别 事务一 select * from 表A where id = 1 读取到 name = 张三 事务二 update 表A set name = "李四" where id = 2 事务一 select * from 表A where id = 1 读取到 name = 李四 (然后事务二被回滚) 数据库里为"张三",但是读取为李四,所以为"脏"读 左边是事务1,先查一次,查到id为1的数据name为张三,这时候事务2又来了,把张三改成了李四,然后事务1又进行了一次查询,查出来了name为李四,那么假如这时候事务2发生了回滚,也就是name还是张三,但是事务1却读到了李四,这就是 脏读 。 1.2已提交读(read commit) RC oracle和mysql的默认隔离级别 : 在已提交读的情况下,虽然未提交的事务数据不会读取到,但是在这种情况下,会由于事务的执行也是需要时间的,在一个事务的两次相同查询间隔期间,存在其他事务提交,对数据库的数据进行了删除或者插入,那么这一个事务的两次查询结果就不一致了,这就是不可重复读。 1.2.1如何避免不可重复读: mysql:

mysql的锁机制

这一生的挚爱 提交于 2020-08-09 09:23:04
转载马士兵连老师课堂笔记 总结: MyISam存储引擎:表级锁,共享(读)锁、独占(写)锁 共享锁 :session1加共享锁,只可以对加锁的表进行读操作,读取其他没有锁定的表会报错、如果想更新表会报错。session可以查询该表,如果要更新该表的数据会进入阻塞状态 获取共享锁,只能读取加锁的表,不能更新该表与读取其他表,其他会话只能去读不可以进行更新等操作,否则会阻塞 独占锁 :当一个线程获得对一个表的写锁之后,只有持有锁的线程可以对表进行更新操作。其他线程的读写操作都会等待,直到锁释放为止 innodb存储引擎:行级锁,共享(读)锁、排他(写)锁,锁是加载索引上的,不是加到行数据上的,如果select * form table for update,因为使用*会加表锁,而不是行锁; 共享锁:事务1对数据索引加行级锁,可以读取数据不能修改数据,事务2可以对该条数据加入共享锁,单不能加排他锁,事务2可以读取该条数据,但不能修改该条数据 排他锁:事务1对数据索引加行级锁,事务1能读能修改,事务2不能加入任和锁,可以通过普通的查询语句进行查询数据 mysql的锁机制 1、MySQL锁的基本介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性

如何快速重命名MySQL数据库(更改模式名称)?

柔情痞子 提交于 2020-08-09 05:01:20
问题: The MySQL manual at MySQL covers this. 在MySQL手册 的MySQL 涵盖这一点。 Usually I just dump the database and reimport it with a new name. 通常我只是转储数据库并使用新名称重新导入它。 This is not an option for very big databases. 对于非常大的数据库,这不是一个选项。 Apparently RENAME {DATABASE | SCHEMA} db_name TO new_db_name; 显然是 RENAME {DATABASE | SCHEMA} db_name TO new_db_name; RENAME {DATABASE | SCHEMA} db_name TO new_db_name; does bad things, exist only in a handful of versions, and is a bad idea overall . 做坏事,只存在于少数几个版本中,总体上是一个坏主意 。 This needs to work with InnoDB , which stores things very differently than MyISAM . 这需要与 InnoDB 一起使用,

MySQL基础知识回顾

南笙酒味 提交于 2020-08-09 04:10:07
MarkdownPad Document MySQL MySQL:是用于管理文件的一个软件 - 服务端软件 - socket服务端 - 本地文件操作 - 解析指令【SQL语句】 - 客户端软件(各种各样) - socket客户端 - 发送指令 - 解析指令【SQL语句】 PS: - DBMS:数据库管理系统 - SQL语句 需要掌握的技能: - 安装 服务端和客户端 - 连接 - 学习SQL语句规则;指示服务端做任意操作 其他类似软件: 关系型数据库:sqllite,db2,oracle,access,sql server MySQL 非关系型数据库:MongoDB,redis MySQL安装 Windows: 可执行文件安装: while True: 下一步 压缩包 放置任意目录 初始化 服务端:E:\somewhere\mysql-5.7.16-winx64\bin\mysqld --initialize-insecure # 默认用户名 root 密码:空 启动服务端: E:\somewhere\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysqld 客户端连接: E:\somewhere\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysql -u root