Mysql
chengqiuming
这个作者很懒,什么都没留下…
展开
-
mysql 5.7 ERROR 1786 (HY000) 错误处理
一问题描述执行下面语句。create table zz.ii_app_version select * fromii.app_version;报类似下面错误。ERROR 1786 (HY000): CREATE TABLE ... SELECTis forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1二根由分析Mysql 5.7 版本,如果配置如下。gtid_mode = ONenforce_gtid_con...原创 2022-05-09 15:02:44 · 2212 阅读 · 0 评论 -
数据库融合问题以及解决方案
一需求需要将两个高度相似的数据库(z、i)融合到一个数据库(z),这两个数据库之前是通过 Java代码进行数据同步。融合过程中会遇到四大问题需要解决,下面通过举例的方式进行说明。二z 的v 表 ID 公共字段 pay_state pay_money CUSTOMER_ID VISIT_PRODUCT 1 XXXXXXX ...原创 2022-04-27 17:50:37 · 1364 阅读 · 0 评论 -
Sharding-Proxy 分库配置
一创建两个数据库edu_db_1edu_db_2二配置config-sharding.yamlschemaName: sharding_dbdataSources: ds_0: url: jdbc:mysql://127.0.0.1:3306/edu_db_1?serverTimezone=UTC&useSSL=false username: root password: Mima123456 connectionTimeoutMil...原创 2021-11-12 21:03:12 · 1580 阅读 · 2 评论 -
Sharding-Proxy 简介
一 点睛1 定位为透明的数据库代理端。2 Sharding-Proxy为独立应用,需要安装服务,进行分库分表或者读写分离配置,然后启动使用。二安装1在官网下载下面文件apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.zip2解压该文件3lib目录下的 jar 包补充后缀 .jar4拷贝mysql的驱动到lib中mysql-connector-java-8.0.13.jar三...原创 2021-11-10 18:50:58 · 1652 阅读 · 0 评论 -
Sharding-JDBC 实现主从数据库读写分离
一启动主从 mysql 数据库二配置文件# shardingjdbc分片策略# 配置数据源,给数据源起名称,# 水平分库,配置两个数据源spring.shardingsphere.datasource.names=m1,m2,m0,s0# 一个实体类对应两张表,覆盖spring.main.allow-bean-definition-overriding=true#配置第一个数据源具体内容,包含连接池,驱动,地址,用户名和密码spring.shardingsphere.data..原创 2021-11-09 18:52:23 · 1030 阅读 · 0 评论 -
在 Windows 配置 Mysql 主从服务器
一主服务器配置[mysqld]# 开启日志log-bin=mysql-bin# 设置服务id,主从不能一致server-id=1# 设置需要同步的数据库binlog-do-db=user_db# 屏蔽系统库同步binlog-ignore-db=mysqlbinlog-ignore-db=information_schemabinlog-ignore-db=performance_schema二从服务器配置[mysqld]# 开启日志log..原创 2021-11-08 19:39:42 · 500 阅读 · 0 评论 -
在 Windows 上创建两个 Mysql 服务
一 复制之前 MySQL 目录二 修改复制之后配置文件1 修改端口号,文件路径。2 需要把数据文件目录再复制一份。三 把复制修改之后的数据库在 windows 安装服务mysqld install mysqlslava --defaults-file="D:\MySQL\MySQLServerSlave\my.ini"注意1以管理员身份运行2在D:\MySQL\MySQLServerSlave\bin目录下运行3删除服务命令sc delet...原创 2021-11-07 19:59:53 · 273 阅读 · 0 评论 -
mysql 数据库的读写分离图解
一读写分离概念二读写分离原理Sharding-JDBC 读写分离则是根据 SQL 语义的分析,将读操作和写操作分别路由到主库和从库。它提供透明化读写分离,让使用方尽量像使用一个数据库一样使用主从数据库集群。...原创 2021-11-07 19:34:32 · 345 阅读 · 0 评论 -
Sharding-JDBC 的水平分表
一文档参考1官网ShardingSphere2位置二配置文件示例# shardingjdbc 分片策略# 配置数据源,给数据源起名称spring.shardingsphere.datasource.names=m1# 一个实体类对应两张表,覆盖spring.main.allow-bean-definition-overriding=true# 配置数据源具体内容,包含连接池,驱动,地址,用户名和密码spring.shardingsphere.datasour...原创 2021-11-06 15:20:17 · 379 阅读 · 0 评论 -
任务分配问题数据库设计
一医院CREATE TABLE `hospital` ( `ID` varchar(32) NOT NULL COMMENT '主键ID', `NAME` varchar(100) NOT NULL COMMENT '名称', `PROVINCE` varchar(100) NOT NULL COMMENT '所在省', `CITY` varchar(100) NOT NULL COMMENT '所在市', `DISTRICT` varchar(100) DEFAULT NULL.原创 2021-10-04 14:41:44 · 556 阅读 · 0 评论 -
Mysql主从复制
一复制的基本原理1 slave 会从 master 读取 binlog来进行数据同步2三个步骤a master 将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;b slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)。c slave 重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL 复制是异步的且串行化。3原理图二复制的基本原则...原创 2021-09-25 15:15:33 · 205 阅读 · 0 评论 -
行锁的总结
一点睛InnoDB 存储引擎由于实现了行级锁定,虽然在锁定机制的实现方面所带来的性能损耗可能比表级锁定更高一些,但是在整体并发处理能力方面远远优于 MyISAM 的表级锁定。当系统并发量比较高的时候,Innodb 的整体性能和 MyISAM 相比就会有比较明显的优势了。但是,InnoDB 的行级锁定同样也有比较脆弱的一面,当我们使用不当的时候,可能会让 InnoDB 的整体性能表现不仅不能比 MyISAM 高,甚至可能会更差。二行锁分析通过检查innodb_row_lock状态变量来...原创 2021-09-25 11:33:01 · 147 阅读 · 0 评论 -
如何锁定一行
一锁定方法二实战# 原始数据mysql> select * from test_innodb_lock;+------+------+| a | b |+------+------+| 1 | b1 || 3 | mm || 5 | mm || 6 | 6000 || 7 | 7000 || 8 | 8000 || 9 | 9001 || 1 | b1 || 2 | 2000 |...原创 2021-09-25 10:00:35 · 159 阅读 · 0 评论 -
索引失效行锁变成表锁
一实战# 第一个客户端,对 a = 4 执行更新操作,操作成功mysql> update test_innodb_lock set b='4000' where a = 4;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0# 第一个客户端,对 a = 9 执行更新操作,操作成功mysql> update test_innodb_lock set b='9000' where .原创 2021-09-25 09:15:09 · 390 阅读 · 0 评论 -
数据库锁实战三
一表脚本CREATE TABLE test_innodb_lock ( a INT(11), b VARCHAR(16))ENGINE=INNODB;INSERT INTO test_innodb_lock VALUES(1,'b2');INSERT INTO test_innodb_lock VALUES(3,'3');INSERT INTO test_innodb_lock VALUES(4, '4000');INSERT INTO test_innodb_lock VALUE.原创 2021-09-25 08:53:28 · 125 阅读 · 0 评论 -
数据库锁理论
一行锁特点偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率最低,并发度也高。InnoDB和MyISAM的最大不同有两点:一是支持事务;二是采用了行级锁。二事务及其ACID属性三并发事务处理带来的问题1 更新丢失(LostUpdate)当两个或多个事务选择同一行时,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题,最后的更新覆盖了由其他事务所做的更新。例如,两个程序员修改同一java文...原创 2021-09-24 18:44:13 · 138 阅读 · 0 评论 -
数据库锁实战二
一实战# 在客户端1,对 mylock 上写锁mysql> lock tables mylock write;Query OK, 0 rows affected (0.00 sec)# 在客户端1,对 mylock 查询,成功mysql> select * from mylock;+----+------+| id | name |+----+------+| 1 | a2 || 2 | b || 3 | c || 4 | d ||.原创 2021-09-23 20:33:43 · 127 阅读 · 0 评论 -
数据库锁实战一
一点睛锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用外,数据也是一种供很多用户共享的资源。如何保证数据并发的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤为重要,也更加复杂。开销、加锁速度、死锁、粒度、并发性能,只能就具体应用的特点来说哪种更合适。二锁的分类1从对数据操作的类型来分,可分为读、写锁读锁(共享锁):针对同一份数据...原创 2021-09-23 20:00:14 · 142 阅读 · 0 评论 -
全局查询日志
一点睛只允许在测试环境用,不允许在生产环境用。二配置启动在mysql的my.cnf中,设置如下:# 开启general_log = 1# 记录日志文件的路径general_log_file=/path/logfile# 输出格式log_output=FILE 三命令启动set global general_log=1;set global log_output='TABLE';# 此后,你编写的sql 语句,将会记录到mysql库里的general_l...原创 2021-09-23 08:51:31 · 210 阅读 · 0 评论 -
show profile 进行 sql 分析
一点睛showprofile是 mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测试。官网:MySQL :: MySQL 5.7 Reference Manual :: 13.7.5.30 SHOW PROFILE Statement默认情况下,参数处于关闭状态,并保存最近15次的运行结果。二分析步骤1是否支持,看看当前mysql版本是否支持# 默认是关闭,使用前需要开启mysql> show variables l...原创 2021-09-22 18:49:11 · 266 阅读 · 0 评论 -
批量插入数据脚本
一建表CREATE TABLE `dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT NULL, `address` VARCHAR(40) DEFAULT NULL, ceo INT NULL , PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `emp.原创 2021-09-21 18:35:28 · 759 阅读 · 0 评论 -
慢查询日志
一什么是慢查询日志1 MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中。2 具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中。long_query_time 的默认值为 10,意思是运行 10秒 以上的语句。3 由它来查看哪些 SQL 超出了我们的最大忍耐时间值,比如一条 sql 执行超过5秒钟,我们...原创 2021-09-21 16:11:34 · 5559 阅读 · 0 评论 -
order by 和 group by 排序字段优化
一点睛orderby有两种方式排序,filesort和index,index效率高,它指mysql扫描索引本身完成排序。filesort方式效率较低。orderby子句,尽量使用index方式排序,避免使用filesort方式排序。orderby满足两种情况,会使用index方式排序:1orderby语句使用索引最左前列。2使用where子句与order子句条件组合满足索引最左前列。尽快能在索引列上完成排序操作,遵照索引建的最佳左...原创 2021-09-21 11:08:07 · 690 阅读 · 0 评论 -
小表驱动大表
一sql优化分析过程1观察,至少跑1天,看看生产的慢sql情况。2开启慢查询日志,设置阀值,比如超过5秒钟就是慢sql,并将它抓取出来。3expiain +慢 sql 分析。4 showprofile5运维经理orDBA,进行sql数据库服务器的参数调优。二小结1慢查询的开启并捕获2explain +慢sql分析3showprofile查询sql在mysql服务器里面的执行细节和生命周期情况4sql数据库服务器的参...原创 2021-09-21 10:00:57 · 281 阅读 · 0 评论 -
索引面试题分析
一口诀全值匹配我最爱,最左前缀要遵守;带头大哥不能死,中间兄弟不能断;索引列上少计算,范围之后全失效;KE 百分写最右,覆盖索引不写*;不等空值还有 OR,索引影响要注意;VAR 引号不可丢,SQL 优化有诀窍。二脚本create table test03( id int primary key not null auto_increment, c1 char(10), c2 char(10), c3 char(10), c4 char(1...原创 2021-09-19 17:16:03 · 142 阅读 · 0 评论 -
索引优化实战八
一点睛1 字符串不加单引号索引失效。2少用or,用它来连接时会使得索引失效。二实战——字符串不加单引号索引失效mysql> select * from staffs;+----+------+-----+---------+---------------------+| id | name | age | pos | add_time |+----+------+-----+---------+---------------------+...原创 2021-09-19 15:46:04 · 121 阅读 · 0 评论 -
索引优化实战七
一like的前后模糊匹配like以通配符开头('%abc...'),mysql索引失效会变成全表扫描的操作。二实战# % 作为 like 的前缀,会失效mysql> explain select * from staffs where name like '%July%';+----+-------------+--------+------------+------+---------------+------+---------+------+------+------...原创 2021-09-19 15:27:27 · 113 阅读 · 0 评论 -
索引优化实战六
一 字段的 is not null和isnullisnull和isnotnull也无法使用索引二实战# 无法使用索引 mysql> explain select * from staffs where name is null;+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------...原创 2021-09-19 14:46:09 · 107 阅读 · 0 评论 -
索引优化实战五
一点睛mysql在使用不等于(!=或者 <>)的时候,无法使用索引,会导致索引失效,进行全表扫描。二实战# 使用 = 能用到索引mysql> explain select * from staffs where name = 'July';+----+-------------+--------+------------+------+-------------------------+-------------------------+---------+---...原创 2021-09-19 11:00:58 · 98 阅读 · 0 评论 -
索引优化实战四
一 尽量使用覆盖索引即查询列和索引列一致,不要写 select *二实战# 全值匹配我最爱mysql> explain select * from staffs where name = 'July' and age=15 and pos='dev';+----+-------------+--------+------------+------+-------------------------+-------------------------+---------+-----..原创 2021-09-19 10:51:37 · 113 阅读 · 0 评论 -
索引优化实战三
一 索引列上不能有范围查询存储引擎不能使用索引中范围条件右边的列。二实战# 全值匹配我最爱mysql> explain select * from staffs where name = 'July' and age=15 and pos='dev';+----+-------------+--------+------------+------+-------------------------+-------------------------+---------+-----..原创 2021-09-19 10:34:08 · 149 阅读 · 0 评论 -
索引优化实战二
一 不要在索引列上做任何计算不在索引列上做任何操作(计算、函数、(自动 or 手动)类型转换),会导致索引失效而转向全表扫描。二实战# 等号左边无计算,索引生效mysql> explain select * from staffs where name = 'July';+----+-------------+--------+------------+------+-------------------------+-------------------------+----...原创 2021-09-19 10:11:44 · 115 阅读 · 0 评论 -
索引优化实战一
一防止索引失效口诀二 表脚本CREATE TABLE staffs( id INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(24)NOT NULL DEFAULT'' COMMENT'姓名', `age` INT NOT NULL DEFAULT 0 COMMENT'年龄', `pos` VARCHAR(20) NOT NULL DEFAULT'' COMMENT'职位', `add_time` TIMESTAMP NOT N.原创 2021-09-19 09:56:53 · 124 阅读 · 0 评论 -
索引三表优化实战
一脚本CREATE TABLE IF NOT EXISTS `phone`(`phoneid` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,`card` INT (10) UNSIGNED NOT NULL)ENGINE = INNODB;INSERT INTO phone(card)VALUES(FLOOR(1+(RAND()*20)));INSERT INTO phone(card)VALUES(FLOOR(1+(RAND.原创 2021-09-18 09:11:17 · 130 阅读 · 0 评论 -
索引两表优化实战
一脚本CREATE TABLE IF NOT EXISTS `class`( `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `card` INT (10) UNSIGNED NOT NULL);CREATE TABLE IF NOT EXISTS `book`( `bookid` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `card` INT .原创 2021-09-17 18:51:39 · 127 阅读 · 0 评论 -
索引单表优化实战
一脚本CREATE TABLE IF NOT EXISTS `article`(`id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,`author_id` INT (10) UNSIGNED NOT NULL,`category_id` INT(10) UNSIGNED NOT NULL ,`views` INT(10) UNSIGNED NOT NULL ,`comments` INT(10) UNSIGNED NOT NU.原创 2021-09-17 18:06:07 · 131 阅读 · 0 评论 -
explain 性能分析(五)
一Extra不适合在其他列中显示但十分重要的额外信息。二 Using filesort说明 mysql 会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL 中无法利用索引完成的排序操作称为“文件排序”。这种情况很糟糕,可谓九死一生。如果可以,尽快优化。1实战1出现 filesort 的情况。优化后,不再出现 filesort 的情况:查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度。2实战2三 Using t...原创 2021-09-16 18:30:10 · 149 阅读 · 0 评论 -
explain 性能分析(四)
一 ref1说明显示索引的哪一列被使用了,如果可能的话,是一个常数。哪些列或常量被用于查找索引列上的值。2实战13实战2二 rowsrows 列显示 MySQL 认为它执行查询时必须检查的行数。越少越好!1实战12实战2从这个例子可以看出建立索引带来的性能提升。...原创 2021-09-14 19:03:04 · 128 阅读 · 0 评论 -
explain 性能分析(三)
一key_len表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。在不损失精确性的情况下,长度越短越好。key_len 字段能够帮你检查是否充分的利用上了索引。ken_len 越长,说明索引使用得越充分。key_len显示的值为索引长度的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的。二实战1ken_len 越长,索引使用得越充分。查询的结果越精确。三实战21表结构2explain分析...原创 2021-09-14 18:35:55 · 321 阅读 · 0 评论 -
explain 性能分析(二)
一table这个查询是基于哪张表的。二 typetype 是查询的访问类型,是较为重要的一个指标.结果值从最好到最坏依次是: system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index> ALL常见:system > const &g...原创 2021-09-14 09:06:43 · 178 阅读 · 0 评论