MySQL数据库使用时注意事项 建表的角度上 1、合理安排表关系 2、尽量把固定长度的字段放在前面 3、尽量使用char 代替varchar 4、分表:水平分和垂直分 在使用sql语句的时候 1、尽量用
2.注意事项和建议 一 何种查询支持索引? 1 MySQL 目前支持前导列 ---- 就目前来说,mysql 暂时只支持最左前缀原则进行筛选。...,那么可能用到索引范围查找,如果索引范围查找的成本太高, 数据库可能会选择全表扫描的方式 。...在联合查询两个表时,比如查询语句为 select a.col1,b.col2 from a join b on a.id = b.id, 其中id 为两个表的主键,如果a是小表,那么a 就被视为驱动表,那么数据库可能全表扫描...二 注意事项和建议 ---- 1.where 条件中的索引列不能是表达式的一部分,mysql 不支持函数索引 2.InnoDB 二级索引底层叶子极点存储的是索引+主键值 InnoDB 的非主键索引存储的不是实际的记录的指针...8.利用索引来排序 mysql 有两种方式可以产生有序结果,一种是使用文件排序,另一种是扫描有序的索引,我们尽量使用索引来排序 注意事项: 1.
opt/datas/docker/mysql/conf mkdir -p /opt/datas/docker/mysql/data 配置文件 vim /opt/datas/docker/mysql/conf...3306:3306 \ -v /opt/datas/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /opt/datas/docker/mysql/data...:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD= \ -e lower_case_table_names=1 \ -d mysql:8.0...binlog,记录数据的变动,log dump线程将binlog推送到salve的io线程,io线程写入到Relaylog中继日志,从库slave再通过 SQL线程重放到数据库中。...mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /opt/datas/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD
自己在本地测试mysql时,需要用到select into ,简单测试了一下 mysql> select * into nod from NODES; ERROR 1327 (42000):...Undeclared variable: nod 自己网上查了一下,发现在mysql中不支持 : SELECT * INTO B FROM A 但是支持 CREATE TABLE B SELECT...* FROM A 重新测试: mysql> CREATE TABLE nod select * from NODES; Query OK, 2 rows affected (0.08 sec)...参考:http://www.cnblogs.com/gkl0818/archive/2009/01/13/1375045.html http://bugs.mysql.com/bug.php?
自己在本地测试MySQL时,需要用到select into ,简单测试了一下 mysql> select * into nod from NODES; ERROR 1327 (42000): Undeclared...variable: nod 自己网上查了一下,发现在mysql中不支持 : SELECT * INTO B FROM A 但是支持 CREATE TABLE B SELECT * FROM A 重新测试...: mysql> CREATE TABLE nod select * from NODES; Query OK, 2 rows affected (0.08 sec) Records: 2 Duplicates
列名后面可以添加多条记录 向表中的所有字段添加数据时,可以不写前面的字段名称 默认值的使用 友友们 大家好呀 我是你们的小王同学 今天给大家带来的是MySQL...的insert语句注意事项 希望能给大家带来有用的知识 小王的github:WANGxinzhe666 · GitHub 小文的gitee:比特王信哲 (bitewang) - Gitee.com...以上就是小王同学带给大家的insert注意事项
opt/datas/docker/mysql/conf mkdir -p /opt/datas/docker/mysql/data 配置文件 vim /opt/datas/docker/mysql/conf...-p 3306:3306 \ -v /opt/datas/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /opt/datas/docker/mysql...,mysql8.0以后需要这样做,这就是标准的配置mysql8.0的过程。...binlog,记录数据的变动,log dump线程将binlog推送到salve的io线程,io线程写入到Relaylog中继日志,从库slave再通过 SQL线程重放到数据库中。...mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /opt/datas/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD
// MySQL备份过程的注意事项 // 最近疫情比较严重,一直处于远程办公的状态,只有一台笔记本,还是挺不方便的,于是工作效率也比较低,今天看了看数据备份相关的东西,总结了几个MySQL数据备份的注意事项...对于MySQL备份,每个DBA的理解可能都不一样,备份可以分为下面几个维度: 文件种类划分: 1、物理备份,以xtrabackup为代表的物理备份是最常用的备份方法,经常被用在备份大的数据库上面。...按照备份内容划分: 1、全量备份,这个容易理解,就是数据库完整的一个备份 2、增量备份,基于全量备份的基础之上的,例如全量备份备份截止日期是昨天,那么昨天到今天这部分数据就是增量备份 3、日志备份,日志备份是在备份文件的基础上...,再对mysql的binlog进行备份,我们知道binlog中记录了mysql的DDL和DML操作,利用binlog能够还原数据库的某个中间状态。...发现了以下一些可能有用的知识点,罗列出来,如果对大家有帮助,那是极好的,如果没有,权当我自嗨吧~ 1、当我们使用xtrabackup备份的时候,对于单机多实例的机器,最好分开时间备份,因为同一时间备份多个MySQL
MySQL 大数据操作注意事项 http://netkiller.github.io/journal/mysql.parallel.html 摘要 ---- 目录 1. 关于 delete 2....data目录会看到临时表文件 # ll /var/lib/mysql/hx9999_real_history/ -rw-rw---- 1 mysql mysql 9522 May 16...mysql mysql 637534208 May 16 17:29 #sql-c2f_c5f#P#p0.ibd -rw-rw---- 1 mysql mysql 180224 May 16 17...---- 1 mysql mysql 180224 May 16 17:17 #sql-c2f_c5f#P#p3.ibd -rw-rw---- 1 mysql mysql 180224 May...-rw-rw---- 1 mysql mysql 180224 May 16 17:17 #sql-c2f_c5f#P#p6.ibd -rw-rw---- 1 mysql mysql 180224
很多小伙伴应该知道,在 MySQL 中主键不应该使用随机字符串。但是主键不用随机字符串用什么?主键自增?主键自增就是最佳方案吗?有没有其他坑?今天我们就来讨论下这个话题。 1....为什么不用 UUID 经过上篇文章的介绍,我们知道在 MySQL 中,主键索引就是聚簇索引,MySQL 表中的数据是根据主键值聚集在一起的,聚簇索引是一棵 B+Tree,这棵树中的数据是有序的。...基于上面的分析,我们在 MySQL 中尽量不使用 UUID 作为主键,不用 UUID,可能会有小伙伴想到,那我使用主键自增行不行?...mixed:在这种模式下,MySQL 会根据具体的 SQL 语句来决定日志的形式,也就是在 statement 和 row 之间选择一种。...对于这三种不同的模式,很明显,在主从复制的时候,statement 模式可能会导致主从数据不一致,所以现在 MySQL 默认的 binlog 格式都是 row。
对于数据库来说,时间伴随着数据并进。让我们进入MySQL时间漩涡中看一看。 1. 时间类型的字段 MySQL时间类型字段: ?...备注:MySQL还提供时区导入到MySQL系统库的方法。通过mysql_tzinfo_to_sql程序加载/usr/share/zoneinfom下的时区信息。...shell>mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql mysql> SELECT COUNT(*) FROM mysql.time_zone_name...擅长MySQL、Redis、MongoDB数据库高可用设计和运维故障处理、备份恢复、升级迁移、性能优化。自学通过了MySQL OCP 5.6和MySQL OCP 5.7认证。...2年多开发经验,10年数据库运维工作经验,其中专职做MySQL工作8年;曾经担任过项目经理、数据库经理、数据仓库架构师、MySQL技术专家、DBA等职务;涉及行业:金融(银行、理财)、物流、游戏、医疗、
如果索引包含多个列,那么列的顺序十分重要,因为 MySQL 只能高效地使用索引的最左前缀列。...MySQL 能在索引中做最左前缀匹配的 like 比较,但是如果是通配符开头的 like 比较,就不能使用索引。...如果值为 index,则说明 MySQL 使用了索引扫描来做排序。...possible_keys :指出 MySQL 能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用。...如 using where(这表示 MySQL 服务器将存储引擎返回行以后再应用 where 过滤条件);using index(使用了覆盖索引)。
使用MySQL,安全问题不能不注意。以下是MySQL提示的23个注意事项: 1。如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就需要使用SSH隧道来加密该连接的通信。 2。...用set password语句来修改用户的密码,三个步骤,先“mysql -u root”登陆数据库系统,然后“mysql> update mysql.user set password=password...除了root用户外的其他任何用户不允许访问mysql主数据库中的user表; 加密后存放在user表中的加密后的用户密码一旦泄露,其他人可以随意用该用户名/密码相应的数据库; 5。...在传递数据给mysql时检查一下大小; 12。应用程序需要连接到数据库应该使用一般的用户帐号,只开放少数必要的权限给该用户; 13。...确信在mysql目录中只有启动数据库服务的用户才可以对文件有读和写的权限; 17。
但是当数据量和访问量剧增的时候,就会发现mysql变慢,甚至down掉,这就必须要考虑优化sql了,给数据库建立正确合理的索引,是mysql优化的一个重要手段。 ...数据库用户是看不到索引的,它们只是用来加速查询的。数据库搜索引擎使用索引来快速定位记录。 ...这是因为,在进行插入或更新时,数据库也需要插入或更新索引值。...ALTER TABLE `user` ADD INDEX `uname`(title(10)); -- 增加前缀索引SQL,将人名的索引建立在10,这样可以减少索引文件大小,加快索引查询速度 三.索引的使用及注意事项...因此数据库默认排序可以符合要求的情况下不要使用排序操作,尽量不要包含多个列的排序,如果需要最好给这些列建复合索引。
备注:从测试数据可以发现,开启SSL后,数据库QPS平均降低了20%左右,相对还是比较影响性能的。从SSL实现方式来看,建立连接时需要进行握手、加密、解密等操作。...MySQL Connector/J 8.0.9或更高。 MySQL Connector/NET 8.0.10或更高(通过经典的MySQL协议)。...表名存储在磁盘是小写的,但是比较的时候是不区分大小写 2:表名存储在磁盘是大小写的,但是比较的时候是不区分大小写 备注:不可以动态修改,必须重启数据库 2)操作系统的要求 ?...想要转换为对大小写不敏感,方法如下: 1.将数据库数据通过mysqldump导出; 2.在my.cnf中更改lower_case_tables_name = 1,并重启mysql数据库。...3.将导出的数据导入mysql数据库中。 备注:是否可以直接改,不导入。会存在莫名其妙的问题。建议按照上述操作。 3)8.0上进行更改,提示如下信息: ? ?
关于MySQL中删除满足子查询结果数据的操作 关键问题:MySQL不允许在子查询中使用要删除的表 错误示范: DELETE FROM post_activity_user WHERE id IN...避免了长事务,delete执行时MySQL会将所有涉及的行加写锁和Gap锁(间隙锁),所有DML语句执行相关行会被锁住,如果删除数量大,会直接影响相关业务无法使用。...参考: 关于MySQL中删除满足子查询结果数据的操作:https://www.cnblogs.com/wing7319/p/10458765.html delete后加 limit是个好习惯么:https
但是目前MyCat仍主要面对MySQL 5.5, 5.6, 5.7版,对最新的MySQL 8尚未完全支持,需要用户对MySQL 8和MyCat的配置进行一系列的修改。...二、关于MySql 8 主要是修改Mysql配置文件,在Windows平台是my.ini,在linux平台是my.cnf: 修改缺省加密方式:在安装完MySQL 8后,需将缺省的加密方式修改为mysql_native_password...如果是在Linux平台,在首次启动前设置lower_case_table_names = 1(表名大小写不敏感),注意一旦数据库中已有数据,再如此设置会导致启动mysql失败。...登录逻辑库的方式 Mycat登录逻辑库的传统方式是:mysql -uroot -p -h127.0.0.1 -P8066 -DTESTDB 但对于MySql 8,会报密码错误方式,这是由于Mysql 8...useSSL=false&serverTimezone=UTC& characterEncoding=utf8" 四、其它 前一个实验里,Mycat用JDBC连接PostgreSQL等数据库时
前段时间,研发反馈个问题: 一个新上的服务,在测试环境(MySQL5.6)跑的的好好的,发布到产线去(MySQL8.0.19) 运行不起来了,报错如下: 运行异常的jdbc连接串写法: jdbc:mysql...://test.mysql.db01:3306/sbtest?...://test.mysql.db01:3306/sbtest?...二者只有1个小版本差距,查了mysql8.0.19的release note 也没找到关于zeroDateTimeBehavior这块的大的改动。 ...总体而言, 对应MySQL8的,连接还是用CONVERT_TO_NULL这种写法才是稳妥之道。
MVCC mulit version concurrency control , 在每个传统数据库上基本上都有实现,最近突然问了自己一句,MYSQL 是怎么实现的这个功能,好像明白又说不清,那自己就来复习一下...,MYSQL 到底是怎么来完成这个功能的。...MYSQL 实现多版本控制的基础是,MYSQL是具有UNDO表空间的, INNODB 仅仅查看数据行的版本. 低于当前系统的行的事务版本. 保证读取的行在此事务之前存....16 / 2) * innodb_rollback_segments * number undo tablespaces 举例我们的文件有三个的情况下,3*128/2= 192 也就是同一个时刻我们的数据库可以并行支持...8.016 这个版本的MYSQL中可以通过下面的语句来对MYSQL 进行UNDO LOG truncation 性能的监控 SELECT NAME, SUBSYSTEM, COMMENT FROM
utm_source=tuicool&utm_medium=referral) 在建立enum类型的字段时,我们会给他规定一个范围比如 enum('a','b','c'),这时mysql内部会建立一张hash...同样,enum在mysql手册上的说明: ENUM('value1','value2',...) 1或2个字节,取决于枚举值的个数(最多65,535个值) 除非enum的个数超过了一定数量,否则他所占的存储空间也总是
领取专属 10元无门槛券
手把手带您无忧上云