MySQL/MariaDB Tips

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1、mysql 忽略主键冲突、避免重复插入的几种方式 。

1.1、ignore

todo

1.2、replace into

todo

1.3、on duplicate key update

todo

1
2
INSERT  INTO  tbl (columnA,columnB,columnC)  VALUES  (1,2,3) 
ON  DUPLICATE  KEY  UPDATE  columnA=IF(columnB>0,1,columnA)

2、关于 MySQL 的超时值。

1)、查看 MySQL 的各种超时值。

1
2
3
SHOW GLOBAL VARIABLES WHERE VARIABLE_NAME LIKE  '%timeout%' ;
# or
SHOW GLOBAL VARIABLES LIKE  '%timeout%' ;

2)、设置MySQL的连接超时参数可以参考:

3、Windows下移动MariaDB数据目录

4、用 sql 语句查看 MySQL/MariaDB 版本。

1
SELECT  VERSION();

5、查看mysql当前连接数。

1)、查看状态:

1
SHOW STATUS;

2)、查看当前连接数:

1
SHOW STATUS  WHERE  VARIABLE_NAME= 'Threads_connected' ;

3)、查看当前用户有哪些连接:

1
SHOW processlist;

4)、查看所有用户连接。(需root权限)

1
SHOW  full  processlist;

6、修改mysql最大连接数。

1)、查看:

1
2
3
4
/* 查看所有全局变量 */
SHOW  GLOBAL  VARIABLES;
/* 查看最大连接数 */
SHOW  GLOBAL  VARIABLES  WHERE  VARIABLE_NAME= 'MAX_CONNECTIONS' ;

2)、临时修改:

1
SET  GLOBAL  max_connections=3600;

3)、写入配置文件,以Windows下MariaDB为例,在C:\Program Files\MariaDB 10.0\data\my.ini

[MySQLd]段增加或修改 max_connections=3600 。

7、查看大表的行数。

  对于上千万数量级大表,直接用

1
SELECT  COUNT (*)  FROM  tablename;

即使建了主键或唯一索引也还是很慢。可以用下面两种方式查看。

(1)、看下面结果的rows列。

1
2
SHOW  TABLE  STATUS  FROM  mydbname
WHERE  Name = 'mytablename' ;

(2)、看下面结果的TABLE_ROWS列。

1
2
3
SELECT  FROM  information_schema.TABLES
WHERE  TABLE_SCHEMA= 'mydbname'  AND  TABLE_NAME= 'mytablename'
;

  上面两种方式对于MyISAM存储引擎结果是准确的;对于InnoDB存储引擎,结果是近似值,可能还差很远。walker对InnoDB一次测试的状况是,实际数据条数为31182219,上面方式得出值为38569811。可参考文档SHOW TABLE STATUS Syntax关于rows的描述。

8、MySQL利用存储过程执行循环语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
USE dbname;
 
DELIMITER $$   --定义结束符为$$
 
DROP  PROCEDURE  IF EXISTS test_insert;   --删除已有存储过程 
 
CREATE  PROCEDURE  test_insert()   --创建新的存储过程
     BEGIN  
     DECLARE  INT  DEFAULT  1;
     WHILE i<10  DO
         INSERT  INTO  tableName(idx)  VALUES  (i); 
         SET  i=i+1;
     END  WHILE;
     
END  $$   --结束定义语句
 
DELIMITER ;   --恢复结束符为;
 
CALL test_insert();   --调用存储过程

9、将文本导入到mysql,load file示例。(行内分隔符为Tab,换行符为\n)

1
2
LOAD  DATA [ LOCAL ] INFILE  'D:\\tmp\\test.txt' 
IGNORE  INTO  TABLE  tableName FIELDS TERMINATED  BY  '\t'  LINES TERMINATED  BY  '\n' ;

10、从mysql导出数据到文本

(1)、select ...into outfile,只能导出到服务端。

1
2
SELECT  fieldname  FROM  tableName  
INTO  OUTFILE  'D:\\-9.txt'  LINES TERMINATED  BY  '\n' ;

(2)、mysql -e "SELECT ..." >  file_name

1
mysql -h my.db.com -u usrname --password=pass db_name -e  'SELECT foo FROM bar'  /tmp/myfile .txt

注意:如果密码用短命令格式-ppass,-p后不能有空格。

11、用 mysqldump 迁移数据。

(1)、两台 mysql 服务器能直连。

1
mysqldump --databases db_name | mysql -uuser -p*** [--compress] -h 121.121.121.121 db_name

(2)、两台 mysql 服务器不能直连。

1
2
3
4
5
#备份数据库
mysqldump -uuser -p*** dbname > bakfile.sql
 
#还原数据库
mysql -uuser -p** dbname < bakfile.sql

12、mysql将数字字符串转换为数字的方法。参考这里

1
2
3
方法一: SELECT  CAST ( '123'  AS  SIGNED);
方法二: SELECT  CONVERT ( '123' , SIGNED);
方法三: SELECT  '123' +0;

13、关于数据库的字符集:

(1)、十分钟搞清字符集和字符编码

(2)、Aliyun RDS Change MySQL Charset From utf8 To utf8mb4

14、修复/优化表。

1
2
3
4
5
#修复表(仅MyISAM引擎支持repair) 
REPAIR TABLE `table_name`;
 
#优化表 
OPTIMIZE TABLE `table_name`;

15、MySQL整数(int)的取值范围

wKiom1d8di2BlbCyAABA6xQoJAg938.png

16、修改用户密码。(可参考这里

1
2
3
use mysql;  
UPDATE  user  SET  password = password ( 'newpassword' WHERE  user = 'root' ;  
flush  privileges ;


相关阅读:

1、Python+MySQL

2、Windows下移动MariaDB数据目录


*** walker ***


本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1705236如需转载请自行联系原作者

RQSLT
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
关系型数据库 Java MySQL
Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版)
本教程提供了在Linux环境下安装JDK1.8、Tomcat和MariaDB的详细步骤。这三个组件的组合为Java Web开发和部署提供了一个强大的基础。通过遵循这些简单的指导步骤,您可以轻松建立起一个稳定、高效的开发和部署环境。希望这个指导对您的开发工作有所帮助。
235 8
|
5月前
|
缓存 关系型数据库 MySQL
error: Failed dependencies: mariadb-connector-c-config is obsoleted by mysql-community-server-8.0.36-1.el7.x86_64 问题解决
error: Failed dependencies: mariadb-connector-c-config is obsoleted by mysql-community-server-8.0.36-1.el7.x86_64 问题解决
280 19
|
4月前
|
SQL 关系型数据库 MySQL
如何在 MySQL 或 MariaDB 中导入和导出数据库
如何在 MySQL 或 MariaDB 中导入和导出数据库
597 0
|
4月前
|
SQL Ubuntu 关系型数据库
如何在云服务器上创建和管理 MySQL 和 MariaDB 数据库
如何在云服务器上创建和管理 MySQL 和 MariaDB 数据库
53 0
|
4月前
|
关系型数据库 MySQL 数据库连接
FreeSWITCH通过mod_mariadb原生连接MySQL
FreeSWITCH通过mod_mariadb原生连接MySQL
348 0
|
NoSQL 关系型数据库 MySQL
阿里云关系型数据库详细介绍MySQL/MariaDB/SQL Server/PolarDB/PostgreSQL等
阿里云关系型数据库详细介绍MySQL/MariaDB/SQL Server/PolarDB/PostgreSQL等,阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
207 0
|
NoSQL Cloud Native 关系型数据库
阿里云RDS数据库_MySQL_SQL Server_MariaDB_PolarDB_PostgreSQL
阿里云RDS关系型数据库大全:MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
134 0
|
NoSQL 关系型数据库 MySQL
阿里云RDS关系型数据库大全_MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB
338 0
|
关系型数据库 MySQL API
MariaDB数据库中如何允许远程链接mysql并开放3306端口
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
939 0
|
存储 关系型数据库 MySQL
mysql--Centos安装MariaDB(mysql)
mysql--Centos安装MariaDB(mysql)
2099 0

推荐镜像

更多