N叉树、page_size、数据库严格模式修改、数据库中delect和drop的不同
“N叉树”的N值在MySQL中是可以被人工调整吗?
其中有两种方法调整:
1、通过改变key值来调整
N 叉树中非叶子节点存放的是索引信息,索引包含 Key 和 Point 指针。Point 指针固定为 6 个字节,假如 Key 为 10 个字节,那么单个索引就是 16 个字节。如果 B + 树中页大小为 16 K,那么一个页就可以存储 1024 个索引,此时 N 就等于 1024。我们通过改变 Key 的大小,就可以改变 N 的值。
2、通过改变页的大小
页越大,一页存放的索引就越多,N 就越大。数据页调整后,如果数据页太小层数会太深,数据页太大,加载到内存的时间和单个数据页查询时间会提高,需要达到平衡才行。
Mysql的page页
页是InnoDB存储引擎磁盘管理的最小单位,每个页默认16KB;InnoDB存储引擎从1.2.x版本碍事,可以通过参数innodb_page_size将页的大小设置为4K、8K、16K。若设置完成,则所有表中页的大小都为innodb_page_size,不可以再次对其进行修改,除非通过mysqldump导入和导出操作来产生新的库。
InnoDB逻辑存储单元主要分为表空间、段、区和页。层级关系为tablespace -> segment -> extent(64个page,1M) -> page。
innodb_page_size的官方描述:
其中:
第一个系统表空间数据文件(ibdata1)的最小文件大小取决于innodb_page_size值
innodb_page_size只能在初始化MySQL实例之前配置,不能在之后修改。如果没有指定值,则使用默认页面大小初始化实例。
MySQL 5.7增加了对32KB和64KB页面大小的支持。对于32KB和64KB的页面大小,最大行长度约为16000字节。当innodb_page_size设置为32KB或64KB时,不支持ROW_FORMAT= compression。对于innodb_page_size=32k,区段大小为2MB。对于innodb_page_size=64KB,区段大小为4MB。当使用32KB或64KB的页面大小时,innodb_log_buffer_size应该至少设置为16M(默认)。
默认的16KB或更大的页面大小适用于各种工作负载,特别是涉及表扫描的查询和涉及批量更新的DML操作。对于涉及许多小写操作的OLTP工作负载,较小的页面大小可能更有效,在这种工作负载中,当单个页面包含许多行时,可能会出现争用问题。对于通常使用较小块的SSD存储设备,较小的页面也可能是有效的。保持InnoDB页面大小接近存储设备块大小,可以最大限度地减少被重写到磁盘的未更改数据量。
在严格模式下导致MySQL5.7插入用户表的方式新建用户失败,如何修改严格模式让他修改成功?
mysql> set @@explicit_defaults_for_timestamp = 1;
1.此时如果 TIMESTAMP 列没有显示的指定 not null 属性,那么默认的该列可以为 null ,此时向该列中插入 null 值时,会直接记录 null 。
2.如果 TIMESTAMP 列被加上了 not null 属性,并且没有指定默认值。这时如果向表中插入记录,但是没有给该 TIMESTAMP 列指定值的时候,如果 strict sql_mode 被指定了,那么会直接报错。如果 strict sql_mode 没有被指定,那么会向该列中插入 ’0000-00-00 00:00:00’ 并且产生一个 warning 。
去掉sql_mode中的 NO_ZERO_IN_DATE,NO_ZERO_DATE 。
SQL语句:mysql> set @@sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
这里也可修改 MySQL 配置文件来去除规则,没有配置文件在 /etc/mysql 下创建 my.cnf 配置文件sudo vi /etc/mysql/my.cnf
在 [mysqld] 区域添加:sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
如:[mysqld]
sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
最后重启服务器,即可正常执行创建语句。
数据库中delect和drop的不同
Delect语句用于删除表中的行:
DELETE FROM 表名称 WHERE 列名称 = 值
删除所有航:
DELETE * FROM table_name
Drop语句,可以轻松地删除索引、表和数据库。
DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):
DROP TABLE 表名称
DROP DATABASE 语句用于删除数据库:
DROP DATABASE 数据库名称
两种删除语句的区别:
1、DELETE是DML,执行DELETE操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。DROP是DDL,会隐式提交,所以,不能回滚,不会触发触发器。
2、DELETE可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。DROP语句删除表结构及所有数据,并将表所占用的空间全部释放。
3、DELETE语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。DROP语句将删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。
N叉树、page_size、数据库严格模式修改、数据库中delect和drop的不同相关推荐
- oracle数据库归档模式修改ARCHIVELOG
oracle数据库归档模式修改ARCHIVELOG 一.查看当前数据库的归档模式 第一步:查看oracle数据库的归档模式 命令如下:(该命令登录sys用户可查) select log_mode fr ...
- mysql数据库修改数据库名称_MySQL数据库之MySQL 修改数据库名称的一个新奇方法...
本文主要向大家介绍了MySQL数据库之MySQL 修改数据库名称的一个新奇方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL在5.1引入了一个rename data ...
- 游标遍历所有数据库循环执行修改数据库的sql命令
游标遍历所有数据库循环执行修改数据库的sql命令 MSSQL数据库服务器上有很多类似的数据库,需要将这些数据库统一修改其中的某些表或者某些命令,那么就会想到用游标来遍历. 先来说思路: 1,首先需要查 ...
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断...
C#保留2位小数几种场景总结 场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25. ...
- 专业修改数据库服务器,专业修改数据库服务器
专业修改数据库服务器 内容精选 换一换 云服务器备份在支持崩溃一致性备份的基础上,同时支持数据库备份.文件/磁盘数据在同一时间点,通过数据库备份内存数据,能够保证应用系统一致性,如包含MySQL或SA ...
- 数据库操作--批量修改数据库表名及字段名大小写转换及首字母大写+删除没有数据无用的表...
1.修改表名为小写 declare @sql varchar(300)--,@rowcount varchar(10),@dyncnum int declare @tablename varchar( ...
- python修改数据库_python mysql修改数据库数据库
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- oracle数据库方案模式,Oracle数据库技术服务方案.doc
Oracle技术服务方案书 第 PAGE 2 页/总 NUMPAGES 8 页 Oracle数据库技术服务方案 (V1.0) 目录 TOC \o "1-3" \h \z HYPER ...
- Oracle修改数据库为非归档模式
操作步骤如下: 步骤 1 以oracle用户登录服务器,执行以下命令进入SQLPLUS. oracle@smgwrpt:~> sqlplus "/as sysdba" 步骤 ...
最新文章
- hdu 1811 Rank of Tetris (并查集+拓扑排序)
- 人脸识别有风险,美国全面禁止,可为什么中国却全面推广?
- linux中的查找文件夹
- 3.1 Android组件intent filter
- WPF 实现加速小火箭~
- BZOJ.1023.[SHOI2008]cactus仙人掌图(DP)
- Flask 第三方组件之 login
- html css 表头,css固定表格表头(各浏览器通用)
- e2 android,魅蓝E2做工怎么样?魅蓝手机E2拆机全过程图解
- linux装软raid,LINUX中软RAID的实现方案
- Flexbox 布局教程
- 如何写一份交互说明文档
- windows 驱动开发 DDK与WDK WDM的区别
- Java向mysql导入大量scv文件数据(100万行以上)
- Idea中 webservice 的调用
- Base64、32、16 编码解析
- R 语言数据处理入门-2(缺失值处理)
- 论文 结构图 用 visio
- DuckDuckGo + Alfred
- 产出投入表结构类型的介绍
热门文章
- Ubuntu20.4下x264、x265、fdk-aac和FFmpeg4.3源码编译安装
- Linux 初学者:如何在 Ubuntu 中重启网络
- JAVASE的内、外部比较器Comparable和Comparator
- 从零开始导入(imp),导出(dmp)Oracle数据
- 220523-4G一些知识
- 工资代发与批量付款的解决方案
- 海外问卷调查怎么做?手把手教会你如何薅老外的羊毛
- 基于Java+SpringBoot+Vue前后端分离学生管理系统设计与实现
- 【毕业设计】STM32电风扇智能调速器的设计【硬件+原理图+实物+论文】
- ​李宏毅机器学习——强化学习Reinforcement Learning