本文使用的MySQL版本为 8.0.29 账户与安全 用户的创建和授权 在MySQL之前的版本,创建用户和给创建的用户授权可以一条语句执行完成: grant all privileges on *.*...: MySQL 8执行结果 在 MySQL 8 中,需要分2步完成创建用户和授权的操作: -- 创建用户 create user 'zhangsan'@'%' identified by 'Fawai...,而其他的认证插件仍为默认的 caching_sha2_password 。...「password_reuse_interval」 :对于以前使用的账户密码,此变量表示密码可以重复使用之前必须经过的天数。如果值为 0(默认值),则没有基于已用时间的重用限制。...「函数索引的实现原理:」 函数索引在MySQL中相当于新增了一个列,这个列会根据函数来进行计算结果,然后使用函数索引的时候就会用这个计算后的列作为索引,其实就是增加了一个虚拟的列,然后根据虚拟的列进行查询
本文使用的MySQL版本为 8.0.29账户与安全用户的创建和授权在MySQL之前的版本,创建用户和给创建的用户授权可以一条语句执行完成:grant all privileges on . to ‘zhangsan...';复制代码此时,我们来看一下 user 表中的插件信息:zhangsan用户的认证插件改为了mysql_native_password ,而其他的认证插件仍为默认的 caching_sha2_password...密码管理MySQL 8增加了密码管理功能,开始允许限制重复使用以前的密码:这里有几个属性,其中:password_history :此变量定义全局策略,表示在修改密码时,密码可以重复使用之前密码的更改次数...如果值为 0(默认值),则没有基于已用时间的重用限制。...函数索引的实现原理:函数索引在MySQL中相当于新增了一个列,这个列会根据函数来进行计算结果,然后使用函数索引的时候就会用这个计算后的列作为索引,其实就是增加了一个虚拟的列,然后根据虚拟的列进行查询,从而达到利用索引的目的
查询缓存 在解析一个查询语句前,如果查询缓存是打开的,那么MySQL会检查这个查询语句是否命中查询缓存中的数据。如果当前查询恰好命中查询缓存,在检查一次用户权限后直接返回缓存中的结果。...所以两个查询在任何字符上的不同(例如:空格、注释),都会导致缓存不会命中。 如果查询中包含任何用户自定义函数、存储函数、用户变量、临时表、mysql库中的系统表,其查询结果 都不会被缓存。...MySQL使用基于成本的优化器,它尝试预测一个查询使用某种执行计划时的成本,并选择其中成本最小的一个。...在MySQL可以通过查询当前会话的 last_query_cost的值来得到其计算当前查询的成本。...关联查询优于子查询 组合索引或复合索引,最左索引原则 用exist代替in 当索引列有大量重复数据时,SQL查询可能不会去利用索引 JOIN的优化 JOIN原理 在mysql中使用Nested Loop
在数据库表格中,回报此问题的列结果,将从没有值(标记为Null)开始,并且在我们确定亚当没有书籍之前,并不会更新为值“零”。 数据库表主键的取值不能为空值。...另外,数据库中的统计计算,一般将有空值的数据忽略不计。 MYSQL 的null值和’ '值有什么区别呢?...占用空间区别 null值在mysql中的占用空间大小也为null,而’ '值在mysql 中为0。...= 10 COUNT 和 IFNULL函数 你在查询某一列的的条数的时候如果这一列有null值得时候就不会计算进去,但是你不单独查询某一列,如count(1) 或 count(*)时则是完整的。...总结: 在创建MySQL表示尽量要限制not NULL 且给初始值为 ’ ’ 或 0; NULL值在mysql数据库中是占有存储的, ’ ’ 是不占用的。 如果某一列有NULL值,且以此列创建索引。
ref_or_null:类似于ref,但是当查询语句的连接条件或者查询条件包含的列有NULL值时,MySQL会进行额外查询,经常被用于解析子查询。...简单示例如下: (6)possible_keys:执行查询语句时可能用到的索引,但是在实际查询中未必会用到。当此列为NULL时,说明没有可使用的索引,此时可以通过建立索引来提高查询的性能。...(7)key:执行查询语句时MySQL实际会使用到的索引。如果MySQL实际没有使用索引,则此列为NULL。...(8)key_len:执行查询语句时实际用到的索引按照字节计算的长度值,可以通过此字段计算MySQL实际上使用了复合索引中的多少字段。如果key列值为NULL,则key_len列值也为NULL。...(10)rows:查询数据时必须查找的数据行数,当数据表的存储引擎为InnoDB时,值为MySQL的预估值。 (11)Extra:在执行查询语句时额外的详细信息。
1.1 MySQL 服务 1.1.1 启动 / 关闭 ☞ 图形化操作 在命令行中执行 services.msc,打开服务,在服务中找到 MySQL 服务,在左侧或者右击选项中对 MySQl服务进行操作...-h 是 host 指MySQL 所在的 IP 或域名; -P 是 port 指 MySQL 服务端口号,注意是大写的 P;-u 是 username 指登录 MySQL 服务的用户名;-p 是 password...count(distinct col) 计算该列除 NULL 之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,也返回为...② 当某一列的值全是 NULL 时,count(col)的返回结果为 0,但 sum(col)的返回结果为NULL,因此使用 sum()时需注意 NPE 问题。...③ 使用 ISNULL()来判断是否为 NULL 值。 ④ 代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句。
在参与实际项目中,当 MySQL 表的数据量达到百万级时,普通的 SQL 查询效率呈直线下降,而且如果 where 中的查询条件较多时,其查询速度无法容忍。...因为 SQL 只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择到运行时;它必须在编译时进行选择。然而,如果在编译时简历访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。...当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段 sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。...对小型数据集使用 FAST_FORWARD 游标通常要优于其他逐行处理方法,尤其是在必须引用几个表才能获得所需的数据时。在结果集中包括“合计”的例程通常要比使用游标执行的速度快。...如果开发时 间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。
或者在范围运算(>,)等运算的后面 where中索引列有运算 除了上面的几个明显的问题外,还有索引的选择问题。...MySQL 在执行一段 sql 的时候,会先决定使用哪一个索引,如果 选了一个性能比较差的索引,即使走了索引,也会带来性能问题。...key: birthday -- 实际使用到的索引。如果为NULL,则没有使用索引。如果为primary的话,表示使用了主键。 key_len: 5 -- 最长的索引宽度。...如果键是NULL,长度就是NULL。在不损失精确性的情况下,长度越短越好。 ref: const -- 显示哪个字段或常数与key一起被使用。...如果有一个字段有单独的索引,又符合联合索引的最左匹配原则,索引会怎么选? MySQL 索引的选取是基于成本计算的,影响查询成本的因素有 扫描行数、是否需要临时表以及是否需要排序**等。
df.dropna() # 3、丢弃某几列有缺失值的行 df.dropna(axis=0, subset=['a','b'], inplace=True) 直接去除缺失变量,基于第一步我们已经知道每个变量的缺失比例...# 去掉缺失比例大于80%以上的变量 data=data.dropna(thresh=len(data)*0.2, axis=1) 方式2:常量填充 在进行缺失值填充之前,我们要先对缺失的变量进行业务上的了解...,即变量的含义、获取方式、计算逻辑,以便知道该变量为什么会出现缺失值、缺失值代表什么含义。...df['c'] = df['c'].interpolate() # 用前面的值替换, 当第一行有缺失值时,该行利用向前替换无值可取,仍缺失 df.fillna(method='pad') # 用后面的值替换...,当最后一行有缺失值时,该行利用向后替换无值可取,仍缺失 df.fillna(method='backfill')#用后面的值替换 下述2个方式需要先处理数据 # 需要先对a列数据做插值填充,后续作为训练数据
一、前言 提到mysql查询优化,很多人脑海里可能会想到NOT NULL、合理索引、不使用select *、合适的数据类型等等,可是这些优化技巧是怎么来的?我们是否了解其中真正的原理?...如果查询中包含任何用户自定义函数、存储函数、用户变量、时间变量、临时表、mysql库中的系统表,其查询结果都不会被缓存。...性能消耗: 有写操作时,会将关联的表的所有缓存设置为失效,当缓存数据很大时,这个系统消耗将会非常大。 打开查询缓存时,任何的查询语句在开始之前都必须经过检查。...得到解析树之后,不能马上执行,这还需要对这棵树进行预处理,也就是说,这棵树,我没有经过任何优化的树,预处理器会这这棵树进行一些预处理,比如常量放在什么地方,如果有计算的东西,把计算的结果算出来等等......,如果该列有索引,只需要查找B+Tree索引最左端,反之则可以找到最大值) 提前终止查询(比如:使用Limit时,查找到满足数量的结果集后会立即终止查询) 优化排序(在老版本MySQL会使用两次传输排序
若SQL在存储节点执行时间超过该值,则检查该SQL是否走上了索引,若未走上索引,则客户端发起的查询进入流控规则,若走上索引,则不处理。默认为0表示不检查,非0时最小值为200(ms)。...仅参与选举投票的角色在成为集群内最后一个节点前不提供服务,可将其单独与实际集群计算节点配置在同一集群内,可保证集群内只要计算节点多数存活即可提供服务。...;示例1: 不允许用户‘ztm'@‘192.168.210.129'对逻辑库d1中sbtest1表的c列有select权限以OLTP场景标准表sbtest1为例,则可配置:结果:Count (*)得出的结果为0或1000场景三、crossDbXa 关闭时,事务内加入节点会报错...True状态:存储节点密码为明文的时候,计算节点会无法连接该存储节点存储节点密码为密文的时候,计算节点能够连接该存储节点False状态:存储节点密码为明文的时候,计算节点能够连接该存储节点存储节点密码为密文的时候
mysql mysql 176G 11月 26 03:32 user5.ibd 文件大小在5倍大小的区别。..., 200000000 rows affected (22 min 43.62 sec) Records: 200000000 Deleted: 0 Skipped: 0 Warnings: 0 同样的数据写入在主键自增无值产生时...关于TokuDB Bulk Loader前提要求,这个表是空表,对于自增列,如自增列有值的情况下,也可以使用。...建议实际使用中,如果自增列有值的情况下,可以考虑去除自增属性,改成唯一索引,这样减少自增的一些处理逻辑,让TokuDB能跑地更快一点。...基于MySQL数据库下亿级数据的分库分表 史上最详细MySQL全局锁和表锁 国产的数据库新增一员,华为携GaussDB入局 资源下载 关注公众号:数据和云(OraNews)回复关键字获取 help,30
1.单独引用复合索引里非第⼀位置的索引列 假如有INDEX(a,b,c), 当条件为a或a,b或a,b,c时都可以使用索引, 但是当条件为b,c时将不会使用索引。...复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第 ⼀个字段,索引才会被使用。因此,在复合索引中索引列的顺序⾄关重要。如果不是按照索引的最左列开始查找,则⽆法使用索引。...3.对索引应用内部函数,这种情况下应该建立基于函数的索引。...预计使用全表扫描要比使用索引快,则不使用索引 6.like的模糊查询以%开头,索引失效 7.索引列没有限制 not null,索引不存储空值,如果不限制索引列是 not null,oracle会认为索引列有可能存在空值...,所以不会按照索引计算
-- 是否为只读模式 -->参数作用:用于设置当前计算节点为只读模式,在readonly模式下,计算节点只接收DQL(SELECT语句)操作,及SET命令行和SHOW类型操作,拒绝执行DDL(CREATE...ip - 执行SQL的客户端IP地址。time - 执行SQL的时间。user - 连接计算节点执行SQL的用户(包括主机名)。host - 连接计算节点所指定的host值。...status - SQL执行结果是成功还是失败,失败为0 ,成功为1。failed_reason - SQL执行失败的原因。end_time - SQL执行结束时间。...补充说明:客户端发包:计算节点开始收请求包时间,收完请求包时间。服务器发包:计算节点开始对外返回结果集时间,返回结果集完成时间。...-->参数作用:在启动时处理存储节点悬挂的XA事务,默认处理(true)recoverXaInStartup参数设置为true时,启动日志输出如下:参数设置为false时,启动时跳过检查日志输出如下
然 而,如果在编译时建立访问计 划,变量的值还是未知的,因而无法作为索引选择的输入项。...当索引列有大量数据重复时, SQL 查询可能不会去利用索引,如一表中有字段 ***,male、female 几乎各一半,那么即使在 *** 上建 了索引也对查询效率起不了作用。...对小型数据集使用 FAST_FORWARD 游标通常要优于其他逐行处理方法,尤其是在必须引用几个表才能获得所需的数据时。在结果集中包括“合计”的例程通常要比使用游标执行的速度快。...如果开发时 间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。...35、 当只要一行数据时使用 LIMIT 1 当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。
一、数据库概述 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。...%\bin 添加到path变量后 * 登录Mysql * mysql -u 用户名 -p 回车后输入密码 例如:mysql -u root -p abc * 或者 mysql -h...* 修改mysql root用户密码 1) 停止mysql服务 在cmd运行输入services.msc 停止mysql服务 或者 cmd -->...SELECT *,sal+comm FROM emp; comm列有很多记录的值为NULL,因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。...,那么使用字符串排序(即字典顺序)运算; SUM(): 计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; AVG(): 计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0
这天我正在午休呢,公司DBA就把我喊醒了,说某库出现大量慢SQL,很快啊,很快,我还没反应过来,库就挂了,我心想现在的用户不讲武德啊,怎么在我睡觉的时候大量请求呢。...由于业务前期数据量比较小,基本都能满足这个要求,但随着业务量的增长,数据量也随之增加,对应接口的SQL耗时也在变长,直接影响了用户的体验,这时候就需要对SQL进行优化。...避免在关联查询Join时字段字符集不匹配导致索引失效,同时目前只有utf8mb4支持emoji表情存储。...#Comment:在索引列中没有被描述的信息,例如索引被禁用。 #Index_comment:创建索引时的备注。...index_merge默认是在优化器选项是开启的,主要是将多个范围扫描的结果集合并成一个,可以通过变量查看。
因为 SQL 只有在运行时才会解析局部变量,但优 化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计 划,变量的值还是未知的,因而无法作为索引选择的输入项。...当索引列有大量数据重复时, SQL 查询可能不会去利用索引,如一表中有字段 ***,male、female 几乎各一半,那么即使在 *** 上建 了索引也对查询效率起不了作用。...对小型数据集使用 FAST_FORWARD 游标通常要优于其他逐行处理方法,尤其是在必须引用几个表才能获得所需的数据时。在结果集中包括“合计”的例程通常要比使用游标执行的速度快。...以上语句用于分析和存储表的关键字分布,分析的结果将可以使得系统得到准确的统计信息,使得SQL能够生成正确的执行计划。如果用户感觉实际执行计划并不是预期的执行计划,执行一次分析表可能会解决问题。...5、只要能满足你的需求,应尽可能使用更小的数据类型:例如使用 MEDIUMINT 代替 INT 6、尽量把所有的列设置为 NOT NULL,如果你要保存 NULL,手动去设置它,而不是把它设为默认值。
COMMENT '用户id/手机号', `weight` varchar(5) DEFAULT NULL COMMENT '和码体重(KG)', `level` varchar(20) DEFAULT...mysql mysql 176G 11月 26 03:32 user5.ibd 文件大小在5倍大小的区别。..., 200000000 rows affected (22 min 43.62 sec) Records: 200000000 Deleted: 0 Skipped: 0 Warnings: 0 同样的数据写入在主键自增无值产生时...关于TokuDB Bulk Loader前提要求,这个表是空表,对于自增列,如自增列有值的情况下,也可以使用。...建议实际使用中,如果自增列有值的情况下,可以考虑去除自增属性,改成唯一索引,这样减少自增的一些处理逻辑,让TokuDB能跑地更快一点。
少计算: Mysql的作用是用来存取数据的,不是做计算的。 做计算的话可以用其他方法去实现,mysql做计算是很耗资源的。...避免在建立的索引的数据列字段上有下列操作: 计算 使用not,,!= 使用IS NULL和IS NOT NULL 数据类型转换 使用函数 索引字段中不要有null。...查询中有些索引无效 SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引 比如:一表中有字段 sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用...在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。...然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。
领取专属 10元无门槛券
手把手带您无忧上云