今天本来是想测试一下在使用触发器的情况下在一个表中插入1百万条数据和用代码实现有多大差别。但没想到插入语句一直执行不完,而观察安装MySQL的服务器CPU使用才5%左右。
这么慢的速度实在等不下去了,于是把innodb_flush_log_at_trx_commit参数调整为2.哈,好家伙,CPU占用马上跳到了70%左右,果然变快了。而且我的数据一会儿就插入完成了。于是深刻地明白了,以前在innodb_flush_log_at_trx_commit为1的时候,大多数时间CPU都在等待日志的读写。
MySQL 数据类型中的 integer types 有点奇怪。你可能会见到诸如:int(3)、int(4)、int(8) 之类的 int 数据类型。刚接触 MySQL 的时候,我还以为 int(3) 占用的存储空间比 int(4) 要小, int(4) 占用的存储空间比 int(8) 小。
后来,参看 MySQL 手册,发现自己理解错了。
int(M): M indicates the maximum display width for integer types.
PHP 的会话默认是以文件的形式存在的,可以配置到 NoSQL 中,即提高了访问速度,又能很好地实现会话共享,,,爽歪歪!
配置方式如下:
方法一:修改 php.ini 的设置
session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379"
修改完之后,重启一下 php-fpm。
在 [mysqld] 节点下,增加如下内容:
general_log = ON general_log_file = D:/Data/log/sql.log
general_log = ON 表示开启日志记录,
general_log_file 为日志保存的路径。
MySQL提供了两个通配符与LIKE操作符一起使用:百分比 %和下划线_。
- percent(%)通配符:允许您匹配任何零个或多个字符的字符串。
- 下划线(_)通配符:允许您匹配任何单个字符。
字段太多,超过了 行记录的 总容量,报错:
The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
解决方案:
把字段类型,修改为 text
update table1 t1 ,table2 t2 set t1.field1 = t2.field2 where t1.id = t2.id