MySQL 常用操作

一、MySQL 数据库存储过程调用

delimiter //;
create procedure testP ()
begin
declare i int;
set i=0;
while i<5000 do
insert into person values (null, i+10);
set i=i+1;
commit;
end while;
end//
delimiter ;//
# 如下调用
call testP
  • 因为存储过程中每个语句是用;分开的,所以使用delimiter // 暂时将SQL分隔符便为//
  • 注意testP后面要有空格再加上括号

二、sync_binlog 的性能影响

1、默认sync_binlog=0 用MySQL自行决定何时同步binlog日志到磁盘中

2、设置sync_binlog=1表示每一次binlog更新都同步到磁盘中

3、设置sync_binlog=100 表示每100次binlog日志再同步到磁盘中 根据 MySQL 官网文档 ,并没有这个设置; **谢谢@Jesper2357 ** 指出

总结:

  1. sync_binlog的设置若设置比较大,则可能在服务器崩溃后,启动时,会出现数据不一致问题,binlog日志未更新到磁盘,
  2. 如上可以看到,在频繁的进行dml时,若sync_binlog设置过小则会严重影响MySQL的性能

三、跨数据库导入

需求如下

SELECT seewo_sys_users.resourceid AS c_user_uid, 
    '' AS c_app_code,
	case when ISNULL(seewo_sys_users.unitId) then 0 else seewo_sys_users.unitId end AS c_unit_id, 
    case when ISNULL(seewo_teacher_subject_rel.stageId) then '' else seewo_teacher_subject_rel.stageId end AS c_stage_id, 
    case when ISNULL(seewo_teacher_subject_rel.subjectId) then '' else seewo_teacher_subject_rel.subjectId end AS c_subject_id,
	case when ISNULL(seewo_sys_users.realName) then 0 else seewo_sys_users.gender end AS c_realname, 
	case when ISNULL(seewo_sys_users.provinceId) then '' else seewo_sys_users.provinceId end AS c_province_id, 
	case when ISNULL(seewo_sys_users.cityId) then '' else seewo_sys_users.cityId end AS c_city_id, 
	case when ISNULL(seewo_sys_users.gender) then 0 else seewo_sys_users.gender end AS c_gender, 
    case when ISNULL(seewo_sys_users.phone) then '' else seewo_sys_users.phone end AS c_phone, 
    case when ISNULL(seewo_sys_users.cnname) then '' else seewo_sys_users.cnname end AS c_nickname, 
	seewo_sys_users.address AS c_address, 
    seewo_sys_users.photoURL AS c_photo_url, 
    seewo_sys_users.idNumber AS c_id_number, 
    case when ISNULL(seewo_sys_users.isDeleted) then 0 else seewo_sys_users.isDeleted end AS c_is_deleted, 
	NOW() as c_create_time,
    NOW() as c_update_time
FROM seewo_sys_users Left JOIN seewo_teacher_subject_rel ON seewo_sys_users.resourceid = seewo_teacher_subject_rel.teacherId

将执行结果导出后导入到encloud.t_seewo_user_info_sync 新增的表

方法一

  1. 使用HeidiSQL 将查询结果导出为SQL语句(insert 语句)
  2. 在服务端直接使用source *.sql 导入数据

方法二

  1. 使用navicat 将查询结果导出到excel表中(带列名导出)
  2. 使用navicat导入到指定的数据库表中

四、Binlog日志分析

mysqlbinlog  --start-datetime='2017-07-19 16:30:00' --stop-datetime='2017-07-19 17:25:00' --database=seewo_school -vv --base64-output=decode-rows bin-log-mysqld.000010 > seewo_school.sql

posted @ 2017-07-23 09:48  简海青  阅读(589)  评论(2编辑  收藏  举报