MySQL
(73)MySQL 使用另一个表的已存储数据为当前表对应字段赋值
例如,
- store 存储的是商铺的基本信息,包括商铺 id, 商铺名称
- collection 存储的是收银记录,包括金额,商铺 id
现在为了避免联表查询,需要在 collection 表中增加一个冗余字段,Store
MySQL BOOL 类型是否需要建索引
通常不需要, 而且不建议
* 1/0 值分布均匀的话,不需要建立索引。如果建立了,并不会使查询更快,反而写入更慢。
* 1/0 中的某个值只存在少量的时候。索引有效果。
从 MySQL 的索引机制来分析,MySQL 使用的是
mysql 命令行进行数据导出/导入
数据导出
mysqldump -uusername -p db_name > db_name.sql;
数据导入
mysql -uusername -p db_name < db_name.sql;
mysql utf8mb4 编码
MySQL server version 5.5.3 or higher 引入了 utf8mb4 编码。
## Utf8 与 Utf8mb4 的区别
Utf8 只能支持 1~3 个字节的字符
Utf8mb4 则可以支持 4 个
MySQL table engine
5.7 默认使用的是 InnoDB engine
常见的 engine 类型, MyISAM 与 InnoDB 的区别
大部分情况下,采用默认的 InnoDB 即可
> InnoDB: The default storag
MySQL 中将 varchar 字段转换成数字进行排序
问题来源于 ecshop 的商品属性列表排序 bug。
includes/lib_goods.php 中是这样写的
'ORDER BY a.sort_order, g.attr_price, g.goods_attr_i
MySQL 的事务
## transaction logging
为了保证事务操作更高效,MySQL 不是直接更新磁盘上的对应数据,而是
- 首先更新磁盘上数据在内存中的 copy
- append 到 transaction log 中,使用 IO
MySQL 慢查询定位
## 如何开启慢查询日志
编辑 my.cnf, 注意,需置于 mysqld 的 section 下
log_slow_queries = /tmp/mysql-slow.log
long_query_time =
MySQL 的那些锁
## MySQL 锁的类型
### shared locks (read locks):
> Read locks on a resource are shared, or mutually nonblocking: many cli
mysql
## Quick Links
* [mysql common types](mysql-common-types)
* [Mysql DBA 20天速成指南](http://lutaf.com/130.htm)
* [为高性能而生的索