数据库先写日志还是先写数据?
每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging技术来保证了事务日志的原子性和持久性.而这项技术不仅仅保证了ACID中的原子性(A)和持久性(D),还大大减少了IO操作,把对数据的修改提交到磁盘的工作交给lazy-writer和checkpoint. 预写式日志(Write-Ahead Logging (WAL)) SQL Server使用了WAL来确保了事务的原子性和持久性.实际上,不光是SQL Server,基本上主流的关系数据库包括oracle,mysql,db2都使用了WAL技术. WAL的...
mysql update触发器
DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ TRIGGER `test`.`trig_update` AFTER UPDATE ON `test`.`shunqing_content_open` FOR EACH ROW BEGIN DECLARE num INT; IF(old.title<> new.title OR old.content<>new.content) THEN SELECT COUNT(0) INTO num FROM shunqing_content_tmp WHERE tid=new.tid; IF(num = 0) THEN INSERT INTO shunqing_content_tmp(tid,TYPE,createtime)VALUES(new.tid,2,N...
MySQL使用Union创建视图报错
mysql> select * from test_main; +----+-------+ | id | value | +----+-------+ | 1 | ONE | | 2 | TWO | | 3 | THREE | +----+-------+ 3 rows in set (0.00 sec) mysql> create table test_main2 select * from test_main; Query OK, 3 rows affected (0.04 sec) Records: 3 Duplicates: 0 Warnings: 0 -- 创建视图, sql 语句加了括号, 报错。 CREATE VIEW view_test_main AS ( SELECT * FROM test_main UNION ALL SELECT * FROM test_main2 ); ERROR 1064 (42000): You have an e...
mysql插入单引号字符串
此时将字符串中的单引号" ' "替换成" ' ' "两个单引号即可。 此时应该利用java中的“replace”方法进行替换。此处给出java中的替换代码。 public static void main(String[] args) throws Exception{ Server ss=new Server(); String str="I'm a boy"; String temp=str.replaceAll("'", "''"); String sql="insert into test VALUES('"+temp+"');"; ss.operate(sql, 2); System.out.println(temp); System.out.println(sql); } 此时的输出结...
一步一步使用mycat(二):主从复制
在讲主从复制前,我们先说一下Mysql主从复制实现原理: 高性能Mysql主从架构的复制原理 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码 2、修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 3、修改从服务器slave: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[不是必须...
MySQL数据库 v5.1.73 Final For Windows 安装版(x64)
MySQL数据库 v5.1.73 Final For Windows 安装版(x64)
mysql获取拼音首字母(改进版)
DELIMITER $$ USE `test`$$ DROP FUNCTION IF EXISTS `getPY`$$ CREATE FUNCTION `getpy`(in_string VARCHAR(255)) RETURNS VARCHAR(255) CHARSET utf8 BEGIN DECLARE tmp_str VARCHAR(255) CHARSET utf8 DEFAULT ''; DECLARE str_len SMALLINT DEFAULT 0; DECLARE tem_loc SMALLINT DEFAULT 0; DECLARE tmp_char VARCHAR(10) CHARSET utf8 DEFAULT ''; DECLARE tmp_len SMALLINT DEFAULT 0; DECLARE tmp_rs VARCHAR(255) CHARSET utf8 DEFAULT ''; DECLARE t...
mysqld_safe –skip-grant-tables 无效
mysql忘记密码时,使用mysqld_safe --skip-grant-tables 无效,报错,如下: Server socket created on IP: '0.0.0.0'. 170205 19:02:18 [Note] Event Scheduler: Loaded 0 events 170205 19:02:18 [Note] /usr/local/mysql/bin/mysqld: ready for connections. Version: '5.5.37-log' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL) 170205 19:04:01 mysqld_safe A mysqld process already exists 170205 19:04:29 mysqld_safe A mysqld process already exists 170205 19:05:25 mysqld_saf...
MySQL修改root密码的多种方法
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass "newpass" 方法3: 用UPDATE直接编辑user表 mysql -u root mysql> use mysql; mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root'; mysql> FLUSH PRIVILEGES; 在丢失root密码的时候,可以这样 mysqld_safe --skip-gran...
Starting MySQL. ERROR! The server quit without updating PID file (/alidata/server/mysql/data/AY140703134622335840Z.pid)
Starting MySQL. ERROR! The server quit without updating PID file (/alidata/server/mysql/data/AY140703134622335840Z.pid) 查看日志发现以下日志 请教高手这是什么问题? 140813 08:42:34 mysqld_safe Starting mysqld daemon with databases from /alidata/server/mysql/data 140813 8:42:34 [Note] Plugin 'FEDERATED' is disabled. 140813 8:42:34 InnoDB: The InnoDB memory heap is disabled 140813 8:42:34 InnoDB: Mutexes and rw_locks use GCC atomic builtins 140813 8:42:34 InnoDB: C...