mysql
文章平均质量分 69
技术闲聊DD
代码改变生活,程序改变世界!
展开
-
《彻底掌握索引》—— 要点问题(3)
这时候我们会感觉奇怪,idx_name_age(name,age)是联合索引,为什么选出包含“小”字后,不再顺便看下年龄age再回表呢,所以在MySQL 5.6就引入了索引下推优化,可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。如果是Mysql5.6之前,在idx_name_age索引树,找出所有名字第一个字是“小”的人,拿到它们的主键id,然后回表找出数据行,再去对比年龄和性别等其他字段。对于InnoDB表,此数字是估计值,并非一定是个准确值。原创 2023-03-15 16:00:30 · 333 阅读 · 1 评论 -
《彻底掌握索引》—— 要点问题(2)
当查询的数据在索引树中,找不到的时候,需要回到主键索引树中去获取,这个过程叫做回表。回表查询可以理解为普通索引的查询,先定位主键值,再定位行记录,它的性能较扫一遍索引树更低。主键索引的叶子结点存储的是一行完整的数据。非主键索引的叶子结点存储的则是主键值。叶子结点不包含行记录的全部数据;非主键的叶子结点中,除了用来排序的key还包含一个bookmark;该书签存储了聚集索引的key。所以,当我们需要查询的时候:如果是通过主键索引来查询数据,例如。原创 2023-03-15 14:20:55 · 298 阅读 · 0 评论 -
《彻底掌握索引》—— 要点问题(1)
B+树的优点:它每个节点可以存储更多的数据,树的高度会随之降低,读取磁盘的次数就会降低(和二叉树,平衡二叉树的区别)。它的非叶子节点上存储的都是键值数据,而非表数据,这样就会存储更多的键值,相对应的树的叶子节点就会更多,树就变得会矮胖,这样对磁盘的IO就会再次减少(和B树的区别)。B+树的所有数据都在叶子节点上存储,并且数据是按照顺序排列,链表连接,这样它的查询就会变得异常简单。当查询的数据在索引树中,找不到的时候,需要回到主键索引树中去获取,这个过程叫做回表。使用的查询SQL。原创 2023-03-13 17:07:39 · 225 阅读 · 0 评论 -
MYSQL事务隔离级别和锁分析
1 事务并发的问题并发产生的问题有:脏读,不可重复读,幻读。脏读有AB两个事务,B事务对一条数据进行修改,但未提交;而A事务在这之后对同一条数据进行读操作,读到的若是未提交的修改后的数据,就说明产生了脏读现象。不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。幻读第一个原创 2021-11-03 16:00:14 · 128 阅读 · 0 评论 -
ShardingSphere学习(5)- Sharding-JDBC 实现公共表的操作
公共表就是字典表,每个数据库中都需要操作的字典表,所以需要对这些库中的公共表同时进行增删改查。1. 数据库结构2. 配置# shardingjdbc 分片策略# 配置数据源,给数据源起名称,# 水平分库,配置两个数据源spring.shardingsphere.datasource.names=m1,m2# 一个实体类对应两张表,覆盖spring.main.allow-bean-definition-overriding=truespring.shardingsphere.datas原创 2021-10-26 16:58:18 · 335 阅读 · 0 评论 -
ShardingSphere学习(4)- Sharding-JDBC 实现垂直分库
垂直分库其实就是配置两个数据源,在代码书写中对这两个数据库的表可以不用手动切换数据源,无感操作。1. 数据库结构2. 配置文件# shardingjdbc 分片策略# 配置数据源,给数据源起名称,# 水平分库,配置两个数据源spring.shardingsphere.datasource.names=m1,m2# 一个实体类对应两张表,覆盖spring.main.allow-bean-definition-overriding=truespring.shardingsphere.d原创 2021-10-26 16:09:06 · 257 阅读 · 0 评论 -
ShardingSphere学习(3)- Sharding-JDBC 实现水平分表和水平分库
1 数据库结构要求是:2. application.properties# 配置数据源,给数据源起名称,# 水平分库,配置两个数据源spring.shardingsphere.datasource.names=m1,m2# 一个实体类对应两张表,覆盖spring.main.allow-bean-definition-overriding=true#配置第一个数据源具体内容,包含连接池,驱动,地址,用户名和密码spring.shardingsphere.datasource.m1.t原创 2021-10-22 16:12:09 · 186 阅读 · 0 评论 -
java整合canal 实现数据同步
canal 简介阿里开源的数据库同步工具,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,可以简单地把canal理解为一个用来同步增量数据的一个工具。canal的数据同步不是全量的,而是增量。基于binary log增量订阅和消费,canal可以做:数据库镜像。数据库实时备份。索引构建和实时维护。业务cache(缓存)刷新。带业务逻辑的增量数据处理。canal 原理原理相对比较简单:canal模拟mysql slave的交互协议,伪装自己为mysql sla原创 2021-10-21 17:55:23 · 2426 阅读 · 0 评论 -
使用sql语句往MySQL插入1000万条数据
链接转载 2021-09-09 10:33:44 · 543 阅读 · 0 评论 -
海量数据的数据库表设计细则
1. 表分类设计和命名规则一般海量数据就需要对表进行分类,主要分为如下:主数据,其数据量基本稳定,不随时间而线性增长。比如,分公司,产品,经销商。 这种数据库表,我们一般以 tm_ 作为表名的前缀, 意思是 table of master data。系统级数据,其数据量基本稳定,不随时间而线性增长。比如,用户权限控制,配置参数。 这种数据库表,我们一般以 ts_ 作为表名的前缀, 意思是 table of system。日志数据表,随时间而线性增长,但会安排定时任务定期删除旧数据,保持总体数据量稳原创 2021-09-09 09:59:05 · 1732 阅读 · 0 评论 -
MySQL中timestamp和datetime详细比较
1. MySQL中表示当前时间的几种方式CURRENT_TIMESTAMPCURRENT_TIMESTAMP()NOW()LOCALTIMELOCALTIME()LOCALTIMESTAMPLOCALTIMESTAMP()2. TIMESTAMP和DATETIME的比较一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],它可分为两部分:date部分和time部分,其中,date部分对应格式中的“YYYY-MM-DD”,time部分对应格式中的原创 2021-09-07 11:01:33 · 881 阅读 · 0 评论 -
工作上遇到的一些问题-- 数据库相关
数据库导导出命令:方法1:mysqldump -h localhost -u root -p test01 > /home/chuzj/daochu.sqlmysql -h localhost -u root -p test01 < /home/chuzj/daochu.sql --default-character-set=utf8 –default-character...原创 2019-07-16 17:21:18 · 180 阅读 · 0 评论 -
mysql乱码解决和docker安装mysql 客户端工具连接报错
1 首先看一下自己的数据库的编码是否有问题show variables like "char%";如果和下面不一样请修改2 然后定位配置文件的位置mysql --verbose --help|grep -A 1 'Default options'或者执行:mysqld --verbose --help|grep -A 1 'Default options'优先级是从前往后,尽...原创 2019-06-27 14:59:35 · 121 阅读 · 0 评论 -
Spring实战 第1章 Spring之旅
本章内容:Spring的bean容器 介绍Spring的核心模块 Spring的新功能本章目录:1.1 简化Java开发1.1.1 激发POJO的潜能1.1.2 依赖注入(DI)1.1.3 应用切面Spring的使命:简化java开发 为了降低Java开发的复杂性,Spring采取了以下4种关键策略: 1. 基于POJO的轻量级和最小侵入性编程; 2. 通过依赖注入和面向接口实现松耦合原创 2018-01-05 14:54:40 · 879 阅读 · 0 评论 -
如何删除mysql数据库的重复数据
我的做法: 1 首先利用sql查到你所需要的不重复的数据 select *, count(distinct title) from cms_article group by title 2 然后在navicat中将其复制成插入语句 这时候问题出来了,因为所插入的sql中中有一个多余字段 ‘count(distinct title)’ 3 我的做法是把原来的cms_article的原创 2018-01-04 12:30:31 · 7757 阅读 · 0 评论 -
免安装的mysql配置
第一步:解压压缩包,我的是D:mysql 第二步:配置环境变量,在path变量后面追加;D:\mysql\bin 第三步:在mysql目录下新建my.ini 配置如下:[client] port=3306 default-character-set=utf8[mysqld] port=3306character_set_server=utf8# 设置mysql的安装目录原创 2017-09-08 15:26:32 · 327 阅读 · 0 评论