分类目录归档:MySQL

Mysql ON DUPLICATE KEY UPDATE 用法与说明

先声明一点,ON DUPLICATE KEY UPDATE为Mysql特有语法,语句的作用是当insert已经存在的记录时,执行Update。

用法

什么意思?举个例子:
user_admin_t表中有一条数据如下

表中的主键为id,现要插入一条数据,id为1,password为第一次插入的密码,正常写法为:

 	INSERT INTO user_admin_t (_id,password) 
 	VALUES ('1','第一次插入的密码')

执行后刷新表数据,我们来看[……]

阅读全文»

MYSQL实现Oracle的Start with…Connect By递归树查询

因项目迁移,使用的数据库也需要从Oracle迁移到MySQL 其中有个功能使用到了Oracle的Start with…Connect By递归树查询,而MySQL中没有此函数,但可以通过自定义函数的方式来解决这个问题

创建表

create table treeList(
   id varchar(10), -- 节点ID
   name varchar(10), -- 节点名称
   pId varchar(10) -- 父ID
)

插入测试数据

insert into tree[......]

阅读全文»

利用ProxySQL实现MySQL的读写分离

一、Proxysql 的基础知识

ProxySQL是一个可以实现MySQL读写分离的轻量级工具。

ProxySQL的特点

  • 将所有配置保存写入到SQLit表中。
  • 支持动态加载配置,即一般可以在线修改配置,但有少部分参数还是需要重启来生效。
  • 支持query cache。
  • 支持对query的路由,可以针对某个语句进行分配去哪个实例执行。
  • 故障切换。
  • 过滤危险的SQL。
  • 不支持分表,可以分库,但是利用规则配置实现分表。

ProxySQL的管理配置

[……]

阅读全文»

Xtrabackup备份和恢复MySQL

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup中包含两个工具:

* xtrabackup – 用于热备份innodb, xtradb表的工具,不能备份其他表。

* innobackupex – 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。

Xtrabackup可以做什么

* 在线(热)备份整个[……]

阅读全文»

Percona Xtrabackup快速备份MySQL[转]

转载补充:

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。

Xtrabackup有两个主要的工具:xtrabackup、innobackupex

  • (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
  • (2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以[……]

    阅读全文»

修复 MySQL 数据库结构错误 – 升级[转]

不知道是不是每次更新 MySQL 软件之后都需要执行数据库升级指令?在我进行过的几次软件升级之后,总会在 MySQL 的日志中见到“[ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it”之类的错误。虽然这个错误修复起来很简单,却不容易引起注意。

1. 错误描述

我在好几次见到这样的错误提示之后才决定好好看看到底写了些什么。因为网站运行很正常,就心想应该不怎么重要吧。错误提示大致内容如[……]

阅读全文»

MySQL联表查询及联表删除的方法

MySQL联表查询及联表删除都是经常需要用到的操作,下面对MySQL联表查询和联表删除都作了详细的介绍分析,希望对您有所帮助。

MySQL联表查询:

reference mysql manul:
3.2.7. SELECT语法13.2.7.1. JOIN语法
13.2.7.2. UNION语法
eg1:·mysql> SELECT t1.name, t2.salary FROM employee AS t1, info AS t2·-> WHERE t1.name = t2.[……]

阅读全文»

优化临时表使用,SQL语句性能提升100倍

【问题现象】

线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右
SQL语句如下:
SELECT DISTINCT g.*, cp.name AS cp_name, c.name AS category_name, t.name AS type_name FROMgm_game g LEFT JOIN gm_cp cp ON cp.id = g.cp_id AND cp.deleted = 0 LEFT JOIN gm_ca[......]

阅读全文»

详解MySQL中EXPLAIN解释命令

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

使用方法,在select语句前加上explain就可以了:

如:

explain select surname,first_name form a,b where a.id=b.id

EXPLAIN列的解释:

table:显示这一行的数据是关于哪张表的

type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg[……]

阅读全文»