精华内容
下载资源
问答
  • 公司里做的项目, 打算用多个web服务器, 共同连一个DB, 在某个基础表里的数据需要逻辑唯一, 既某对象(attr1="a", attr2="b")在数据库里只能存在一条记录, 由于这个基础在用户使用中是用户自定义的, 因此可能a,b2...
  • 那么一个表可以有多少个索引?每个索引是否是一棵独立的B+树? 答案是可以不止一个索引,且每个索引都是一棵B+树,都存储在.ibd的文件中。 当我有多个索引的时候,数据也要存储多份吗? 当然不需要,数据只会存储...

    我们都知道innodb在进行数据插入的时候,必须要将数据跟某一个索引绑定在一起,这个索引可以是主键,如果没有主键,会选择唯一键,如果没有唯一键,会选择一个6字节的rowid来进行存储,无论如何,数据一定跟某一个索引列放在一起。

    那么一个表中可以有多少个索引?每个索引是否是一棵独立的B+树?

    答案是可以不止一个索引,且每个索引都是一棵B+树,都存储在.ibd的文件中。

    当我有多个索引的时候,数据也要存储多份吗?

    当然不需要,数据只会存储一份。

    相信大家都知道聚簇索引的数据跟索引是存储在一起的,非聚簇索引数据跟索引没有放在一起;
    那么请问innodb是聚簇索引还是非聚簇索引?

    评论区下方留下你的评论吧!

    展开全文
  • 我现在已经获取一个List<String> codeList 这个大概1000~2000个左右,现在要去查询含有该code的记录,原来是拼接codeList变成一个String,然后走in去查 但是由于数量一,就直接...
  • 不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,...
  • Oracle总结【SQL细节、多表查询、分组查询、分页】 Oracle总结【视图、索引、事务、用户权限、批量操作】 Oracle总结【PLSQL学习】 Mysql免安装配置教程(图文版) Oracle11安装和卸载教程 SqlServer安装和连接JDBC...
  • 如果使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。如下图所示: --- !...
  • CMPP实例服务器

    2013-07-04 10:08:02
    不麻烦,你只需要中国移动发给你的一些参数,用一个命令就可以初始化一个实例,然后你就可以使用命令来直接启动和停止这个服务。 2) 如何保证性能? 谈到性能,主要是数据库的数据存取。 我已经很仔细地考虑过...
  • 数据库高频考点

    2021-02-24 12:49:43
    文章目录1、索引是什么?什么作用以及优缺点2、什么是事务?3、数据库的乐观锁和悲观锁是什么?4、使用索引查询一定能提高查询的性能吗?为什么5、超键、候选键...唯一索引可以确保每行数据的唯一性; 通过使用索引

    1、索引是什么?有什么作用以及优缺点

    索引是对数据库表中一或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构。MySQL数据库几个基本的索引类型有:普通索引、唯一索引、主键索引、全文索引。

    • 索引加快数据库的检索速度;
    • 索引降低了插入、删除、修改等维护任务的速度;
    • 唯一索引可以确保每一行数据的唯一性;
    • 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能;
    • 索引需要占物理和数据空间。

    参考 MySQL的索引及其数据结构

    2、什么是事务?

    事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
    事务具备以下4个特征:

    • 原子性:事务中包含的操作被看作一个逻辑单位,这个逻辑单元中的操作要么全部成功,要么全部失败;
    • 一致性:只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态;(可以理解为守恒,A有1000元,转账500给B,那么必定有A减少500元,B增加500元,否则执行失败,回滚到初始状态。)
    • 隔离性:事务允许多个用户对同一数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立;
    • 持久性:事务结束后,事务处理的结果必须能够得到固化。
      参考 数据库事务 - Mr. David 专栏

    3、数据库的乐观锁和悲观锁是什么?

    DBMS中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。
    乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

    • 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作;
    • 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
      参考: 深入理解乐观锁与悲观锁

    4、使用索引查询一定能提高查询的性能吗?为什么

    通常,通过索引查询数据比全表扫描要快.但是我们也必须注意到它的代价.

    索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况:

    • 基于一个范围的检索,一般查询返回结果集小于表中记录数的30%
    • 基于非唯一性索引的检索

    5、超键、候选键、主键、外键分别是什么

    超键:在关系中能唯一标识元组的属性集称为关系模型的超键。
    候选键:最小超键,即没有冗余元素的超键;
    主键:数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合,只能有一个且不能为null;
    外键:在一个表中存在的另一个表的主键称为此表的外键。

    展开全文
  • MySql

    2021-03-19 15:33:04
    1.MySQL索引了解吗? 答:索引是对数据库中一列或列的值进行排序的...联合索引的最左前缀匹配指的是where条件一定要联合索引的第一个字段 是否走联合索引与where条件的顺序无关,只与字段有关 2.MySQL事务了解吗

    1.MySQL索引了解吗?

    答:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库 表中的特定信息,可以加快查询速度。InnoDB存储引擎的索引模式底层实现的数据结构是B+树,所有数据都存放在B+树种。
    主键索引 primary key
    唯一索引 unique key
    聚簇索引:又称主键索引,每个表中只有一个聚簇索引,因为索引只能按一种方式就行排序
    非聚簇索引:又称普通索引,在InnoDB存储索引中,又叫二级索引

    建立索引的好处:加快查询速度,提高系统性能
    坏处:创建和维护索引需要时间,占用物理内存

    创建索引的方式

    自动创建 :mysql会为主键和唯一键的列自动创建索引;
    手动创建:
    create index index_name on tb_account(name);
    索引名字自己起 表名(列名,就是想在哪个列增加索引)
    增加唯一索引
    alter TABLE 表名 ADD UNIQUE INDEX 自己起的索引名(列名);
    增加全文索引
    alter TABLE 表名 ADD fulltest INDEX 自己起的索引名(列名);

    2.主键与外键

    主键保证实体的完整性,加快数据库操作速度,不接受空值,约束确保唯一数据。
    外键保证的是数据的完整性

    3.建表

    创建表的语法
    create table 表名(
    列名 数据类型 [约束],
    列名 数据类型 [约束],
    列名 数据类型 [约束],
    [表级约束]
    )
    CREATE TABLE aaaa (
    id int(4) NOT NULL,
    name varchar(20) DEFAULT NULL,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    4.DDL:数据定义语言;

    用来创建,修改,删除数据库对象;
    语句有;create,alter,drop,truncate;

    drop,truncate,delete区别?

    drop:删除表结构和表中所有记录;不可回退;
    truncate:清空表中的数据,但不删除表结构,也不可回退;
    delete:可以有选择性的删除部分数据,可以回退;

    DML:数据操作语言

    用来对记录进行CURD 的操作(增删改查)
    语句有;insert,update,delete,select

    用户权限

    在这里插入图片描述

    修改表结构

    语法:alter table 表名 (修改的具体内容)
    – 增加一个作者列,插入到bookname之前
    alter table tb_book
    add author varchar(2) after bookname
    –增加一个主键
    alter table tb_book
    add PRIMARY key(bookid)
    –删除主键约束
    alter table tb_book
    drop primary key
    –删除列
    alter table tb_book
    drop 列名

    查看表结构的命令

    desc 表名;

    2.对SQL优化有什么理解?

    show create table TableXX:查看当前表 TableXX 的建表语句
    show index from TableXX:查看当前表 TableXX 上的索引
    alter table 表名 drop index 自己起的索引名: 删除索引
    explain sql语句:分析sql执行的状况
    答:一般情况下我们可以通过建立索引来提高查询速度,或者修改 SQL
    语句,利用索引下推或者最左前缀原则来加快查询速度。
    在这里插入图片描述

    回表指的是什么?

    当使用普通索引查询的方式时,需要先搜索普通索引树,得到其对应的主键值,再到主键索引树搜索一次,叫回表

    最左前缀原则

    联合索引的最左前缀匹配指的是where条件一定要有联合索引的第一个字段,是否走联合索引与where条件的顺序无关,只与字段有关

    索引下推

    mysql5.6以后引入的索引下推优化,可以在索引遍历过程中,对索引包含的其余字段先做判断,直接过滤掉不满足的条件记录,减少回表次数,提升查询效率。

    索引原则:

    2.MySQL事务了解吗?

    答:事务是单个逻辑工作单元执行的一系列操作,是一个不可分割的工作单位。满足如下的
    原子性(Atomicity):不可在被分割

    一致性(Consistency):事务作为一个整体被执行 ,要么都执行,要么全不执行

    隔离性(Isolation):一个事务的执行不应影响其他事务的执行

    持久性(Durability):事务一旦提交,对数据库的修改应该永久保存

    3.如果不做控制,多个事务并发操作数据库会产生哪些问题吗?

    脏读:事务 A 读取了事务 B 未提交的数据,由于事务 B 回滚,导致了事务 A 的数据不一致,结果事务 A 出现了脏读;
    不可重复读:一个事务在自己没有更新数据库数据的情况,同一个查询操作执行两次或多次得到的结果数值不同,因为别的事务更新了该数据,并且提交了事务。
    幻读:事务 A 读的时候读出了 N 条记录,事务 B 在事务 A 执行的过程中增加 了 1 条,事务A 再读的时候就变成了 N+1 条,这种情况就叫做幻读。
    幻读是指一种结构上的改变,比如条数发生了改变;不可重复读是指读出的数值发生了改变

    4.MySQL 数据库事务的隔离级别有哪些?

    答:为了避免数据库事务操作中的问题,MySQL 定义了 4 个事务隔离级别,不同的隔离级别对事务的处理不同。
    读未提交(Read Uncommitted):都允许三种错误。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事务读此行数据。
    读已提交(Read Committed):不允许脏读取。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行数据。
    可重复读(Repeatable Read):禁止不可重复读和脏读,但是有时可能出现幻读。
    序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。

    事务的隔离级别越高,对数据的完整性和一致性保证越佳,但是对并发操作的影响也越
    大。MySQL事务默认隔离级别是可重复读。

    5.数据库日志了解吗?

    MySQL 中的日志模块主要有 binlog(归档日志)
    relay binlog文件(中继日志)

    6.数据库锁了解吗?

    答:MySQL 数据库的锁分为表级锁和行级锁。
    从数据库角度看,行级锁又可以分为独占锁和共享锁。
    独占锁,独占锁锁定的资源只允许进行锁定操作的程序使用, 其它任何对它的操作均不会被接受。
    共享锁,其锁定的资源可以被其他用户读取,但不能被修改。

    7.MySQL 中的死锁是如何形成的?如何解决死锁问题?在这里插入代码片

    答:MySQL 中的死锁主要是多个事务使用行级锁对同一行数据加锁造成的。
    业务逻辑上的死锁解决方案:
    指定锁的获取顺序;
    大事务拆分成各个小事务;
    在同一个事务中,一次锁定尽量多的资源,减少死锁概率;
    给表建立合适的索引以及降低事务的隔离级别等; 

    9.主从库读写分离

    在这里插入图片描述
    主库,当服务器向主myqsl库发送一个请求,这个操作会执行并存储在一个二进制文件binlog
    中(存储了所有的sql语句),binlog是自带的,只会记录写(增删改)操作

    从库读操作,有两个线程一个IO Thread(从主库的binlog文件拷贝,复制到从库自己的relay binlog文件(中继日志,中间的转载的日志)中),再由第二个线程SQL Thread从relay binlog中读取sql语句并执行

    这样就是主从同步,主库增删改,从库不允许增删给,只能读

    在这里插入图片描述
    在这里插入图片描述

    b## 10.数据库连接池

    Druid c3po dbutils

    11.jdbc连接步骤

    ①加载驱动
    ②获取连接
    ③创建statement对象
    ④写sql语句执行
    ⑤关闭连接

    12.什么事预编译,以及他的好处?

    预编译:DB不会在进行编译,而是直接执行编译过的sql
    好处:可以使用占位符,防止sql注入,效率更高

    13.mysql的存储引擎

    在这里插入图片描述

    数据库中char和varchar的区别为:长度不同、效率不同、存储不同。

    一、长度不同

    1、char类型:char类型的长度是固定的。

    2、varchar类型:varchar类型的长度是可变的。

    二、效率不同

    1、char类型:char类型每次修改的数据长度相同,效率更高。

    2、varchar类型:varchar类型每次修改的数据长度不同,效率更低。

    展开全文
  • oracle优化笔记

    2018-08-15 08:29:04
    假如我们在 name 列建了一个索引,而现 在是利用了索引的快速检索原理。索引有个最大的特点是有序排列,当记录检索到 dc 等 以 d 打头的记录后, ORACLE 就停止遍历了!为啥,因为索引是有序的,当出现 d 打头的 ...
  • 11.4.2 一个简单的基于函数的索引例子 414 11.4.3 只对部分行建立索引 422 11.4.4 实现选择的唯一性 424 11.4.5 关于ORA-01743的警告 424 11.4.6 基于函数的索引小结 425 11.5 应用域索引 -1 11.6 关于索引...
  • 1.0.7 如果一个传感器对应物理世界中的一个小片,如何能让多个传感器对应场景中的同一个小片? 2 1.0.8 什么是图像中一个像素位置亮度的物理含义? 3 1.0.9 为什么图像常用512×512,256×256,128×128 等来表示...
  • php高级开发教程说明

    2008-11-27 11:39:22
    目录,选择性地递推子目录,甚至允许使用通配符,你可以创建一个“防弹”函数,它即能 处理大多数特例,又能完美地应付一个目录列举器的普通要求。采用这种策略经过几个项目之 后,你将拥有一个工具参数的库,可以...
  • 作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • 作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • CruiseYoung提供的带详细书签的电子书籍目录 ... SQL Server 2008数据库...虽然无法自由地表达自己的想法,然而,翻译的快乐就在于:使另一个人的好想法能让更的人了解。当然,由于时间紧张,译者水平有限,错误粗糙...
  • 9.6.3 使用唯一索引 416 9.7 高级的索引使用案例 416 9.7.1 外键索引 416 9.7.2 索引视图 419 9.8 最佳实践 422 9.9 总结 423 第10章 并发编程 425 10.1 什么是并发 426 10.2 查询优化的基础知识 427 10.3 ...
  • MySQL中文参考手册

    2010-08-10 22:11:55
    9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的性能 10.1 优化概述 10.2 系统/编译时和启动参数的调节 10.2.1 编译和链接如何影响 MySQL 的速度 10.2.2 磁盘问题 10.2.2.1 为...
  • java面试题

    2018-04-27 19:55:38
    答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式允许其service方法,一个实例可以服务于多个请求,并且其实例一般不会被销毁,而CGI对每个请求都产生新的进程,服务完后就销毁,所以效率上...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...
  • C#微软培训资料

    2014-01-22 14:10:17
    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...
  • LINGO软件的学习

    2009-08-08 22:36:50
    一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。 2.3.1 定义原始集 为了定义一个原始集,必须详细...
  • 5.5.1 提交一个事务 154 5.5.2 回滚一个事务 155 5.6 数据一致性和数据并发性 155 5.6.1 数据库写入器和写前协议 155 5.6.2 SCN 156 5.6.3 撤销管理 156 5.7 备份与恢复体系结构 157 5.7.1 用户管理...
  • MySQL中文参考手册.chm

    热门讨论 2007-06-11 21:31:17
    9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的...
  • 光标移到第二章,这时可以看到第二章的页眉和第一章是相同的,鼠标双击页眉Word会弹出页眉页脚工具栏,工具栏上有一个“同前”按钮(图像按钮,不是文字),这个按钮按下表示本节的页眉与前一节相同,我们需要的是各...
  • 你将会是自己去挣到一个答案,靠提出内涵的、有趣的、思维激励作用的问题 —— 一个有潜力能贡献社区经验的问题,而不仅仅是被动的从他人处索取知识。 另一方面,表明你愿意在找答案的过程中做点什么是一个非常...
  • 25111.2 用生成表查询创建新表 25111.2.1 设计和测试选择查询 25211.2.2 将选择查询转换为生成表查询 25311.2.3 为新表建立关系 25411.2.4 使用新的tblShipAddresses表 25511.3 创建操作查询向一个表中追加记录 ...

空空如也

空空如也

1 2 3 4
收藏数 76
精华内容 30
关键字:

一个表可以有多个唯一索引吗