zwei1121

博客园 首页 新随笔 联系 订阅 管理

sql server  sql.Where("sku.BarCode like @0", "%" + search.BarCode.Trim() + "%");

 like CONCAT('%',@{0},'%') 

SHOW PROFILE ALL FOR QUERY  12

 

replace into 

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

 

alter table test add column source varchar(20) DEFAULT  '' COMMENT '来源';

 

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,因为该语句的插入的效率很慢;

 
 
posted on 2017-05-16 14:57  zwei  阅读(172)  评论(0编辑  收藏  举报