博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql
阅读量:6718 次
发布时间:2019-06-25

本文共 5024 字,大约阅读时间需要 16 分钟。

replace into 

INSERT INTO table (a,b,c) VALUES (1,2,3)    ON DUPLICATE KEY UPDATE c=c+1;

 

show slave status;

enforce_gtid_consistency

 

SELECT UNIX_TIMESTAMP('2009-08-06') ;

SELECT UNIX_TIMESTAMP() ;
SELECT FROM_UNIXTIME(1502184955,'%Y-%m-%d %H:%i:%s');
SELECT FROM_UNIXTIME(substring('1502184608028',1,10),'%Y-%m-%d %H:%i:%s');
select date_format(from_unixtime(substring('1472009536350',1,10)),'%Y-%m-%d')

 select * from  table where token regexp '^[0-9]+$';

 

show status like 'innodb_row_lock%';

 

show processlist;

找到锁进程,kill id ;

UNLOCK TABLES;

 

SHOW PROCESSLIST

show full processlist; 

SHOW PROFILE CPU,BLOCK IO

https://www.2cto.com/database/201703/618261.html

 Binlog Dump GTID   Master has sent all binlog to slave; waiting for more updates

1、将字段类型设为  TIMESTAMP 

2、将默认值设为  CURRENT_TIMESTAMP

 

Field LIKE CONCAT('%',@0,'%')

 like  concat('%,',t.userid,',%')";

 

SELECT GROUP_CONCAT(field) FROM tbl

regexp

 

SHOW VARIABLES LIKE '%character_set_server%';

SHOW VARIABLES LIKE '%collation_server%';
SHOW VARIABLES LIKE '%character_set_database%';

SHOW VARIABLES LIKE '%character_set_client%';

SHOW VARIABLES LIKE '%character_set_connection%';

SHOW VARIABLES LIKE '%character_set_connection%';

SHOW VARIABLES LIKE '%character_set_results%';

 

/*查询*/

SHOW GLOBAL STATUS LIKE 'Com_%' ;
SHOW GLOBAL STATUS LIKE 'innodb_%';
SHOW GLOBAL STATUS LIKE 'slow_%';/*开启日志*/
SHOW processlist;
/*执行计划*/

DESC SELECT* FROM userinfo

SELECT COUNT(*) FROM `studentaccount`;
SHOW PROFILES;
SHOW PROFILE FOR QUERY 10;

/*SQL优化器的 优化后的SQL*

filter在Sserver层过滤后剩下多少满足查询的记录数量
*/
EXPLAIN EXTENDED SELECT SUM(amount) FROM customer a,payment b WHERE 1=1 AND a.customer_id=b.customer_id AND email='1111'
SHOW WARNINGS;

/*

*/
SELECT COUNT(*) FROM payment;
SHOW PROFILES;
SHOW PROFILE FOR QUERY 69;/* 语句能够查看到执行过程中线程中的每个状态和消耗的时间 */
/*
索引情况查看
handler_read_key 的值将很高,这个值代表一个行被索引值读的次数,很低的值表名增加索引得到戏能改善不高,。
hannler_read_rnd_next 的值高
*/
SHOW STATUS LIKE 'handler_read%';
/*
查看进程
*/
SHOW PROCESSLIST;
/*
kill命令使用方法 */

KILL pid

/*
简单的优化方法
1、定期分析表和检查表
*/

ANALYZE TABLE payment;

CHECK TABLE payment;

SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA= 'adultedu';

/*
禁用和启用索引
*/
ALTER TABLE tbl_Name DISABLE KEYS;
ALTER TABLE tbl_Name ENABLE KEYS;

SHOW VARIABLES LIKE '%sort_buffer_size%'

SHOW GLOBAL STATUS LIKE '%Sort_%';
SHOW VARIABLES LIKE '%buffer_pool_size%';
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read_requests';
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_reads';
SHOW VARIABLES LIKE '%max_length%';
/*
b. 查看当前会话隔离级别:
*/
SELECT @@tx_isolation;

/*

c.查看系统隔离级别:
*/

SHOW VARIABLES LIKE '%key_cache_block_size%';

SHOW STATUS LIKE 'key_%';

/*

缓存优化

从索引的角度考虑

Key_reads/ Key_read_requests <0.01

Key_reads / Uptime
Key_blocks_used*key_cache_block_size/key_buffer_size
*/

 

mysql:

 JSON_EXTRACT

 

SELECT

distinct
(
JSON_EXTRACT(
info,
'$.APPLICATION.Identifier'
)
) ApplicationIdentifier,
JSON_EXTRACT(
info,
'$.APPLICATION.Name'
) Name

NOT REGEXP 'server[0-9]+'

NOT REGEXP '^20[0-9]{2,2}-[0-9]{1,2}-[0-9]{1,2}$'

 DATE_FORMAT(create_time,'%Y-%m-%d') = '2017-06-16'

 

binary platform like "A%"

sql server:

LIKE '[0-9][0-9][0-9][0-9]'; like '192.168.[0-9+].%' 方法1:  Sql Server:  Select * Into new_table_name from old_table_name; 这是sql server中的用: 
MYSQL:
Create table new_table_name (Select * from old_table_name); insert into a select * from b
MySQL锁概述

 

相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。

 

MySQL这3种锁的特性可大致归纳如下。

 

开销、加锁速度、死锁、粒度、并发性能

 

l         表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

 

l         行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

 

l         页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
 
MyISAM表锁
MyISAM存储引擎只支持表锁,这也是MySQL开始几个版本中唯一支持的锁类型。随着应用对事务完整性和并发性要求的不断提高,MySQL才开始开发基于事务的存储引擎,后来慢慢出现了支持页锁的BDB存储引擎和支持行锁的InnoDB存储引擎(实际 InnoDB是单独的一个公司,现在已经被Oracle公司收购)。但是MyISAM的表锁依然是使用最为广泛的锁类型。本节将详细介绍MyISAM表锁的使用。

查询表级锁争用情况

可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:
mysql> 
show status like 'table%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Table_locks_immediate | 2979  |
| Table_locks_waited    | 0     |
+-----------------------+-------+
2 rows in set (0.00 sec))
如果Table_locks_waited的值比较高,则说明存在着较严重的表级锁争用情况。
 

获取InnoDB行锁争用情况    

可以通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况:
mysql> 
show status like 'innodb_row_lock%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| InnoDB_row_lock_current_waits | 0     |
| InnoDB_row_lock_time          | 0     |
| InnoDB_row_lock_time_avg      | 0     |
| InnoDB_row_lock_time_max      | 0     |
| InnoDB_row_lock_waits         | 0     |
+-------------------------------+-------+
5 rows in set (0.01 sec)
如果发现锁争用比较严重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,还可以通过
 
 
 
 

原理分析:create table as是ddl语句,insert into select是dml语句,insert into select每一条记录的时候都会产生undo和redo,整个过程相比create table as产生的redo和undo相当多,因此整个过程会慢也是正常的;但是create table as使用的前提是目标表的结构不存在才能使用;

当有大量数据的时候不推荐使用Insert into as,因为该语句的插入的效率很慢;

 
 

转载于:https://www.cnblogs.com/zwei1121/p/6861390.html

你可能感兴趣的文章
6.接口
查看>>
bitset骚操作
查看>>
nodejs在linux环境下安装更新方式
查看>>
大道至简-第二章 心得体会
查看>>
湖南多校对抗赛(2015.05.03)Problem B: War
查看>>
hdu 3986 Harry Potter and the Final Battle
查看>>
NYIST OJ 题目20 吝啬的王国
查看>>
在500jsp错误页面获取错误信息
查看>>
python常见示例->web简单示例
查看>>
centos7下安装部署mongodb集群(副本集模式)
查看>>
[BZOJ] 1334: [Baltic2008]Elect
查看>>
Jquery对象---Jquery API (2)
查看>>
PHP ReflectionClass
查看>>
swift历史
查看>>
mysql导入大量数据时报MySQL server has gone away错误的解决办法
查看>>
socket简单理解
查看>>
过滤HTML
查看>>
临时表 表变量 游标
查看>>
关于 iTunes Store 授权和取消授权
查看>>
React文档(十三)思考React
查看>>