MySQL

分类下相关文章

MySQL BOOL 类型是否需要建索引

通常不需要, 而且不建议 1/0 值分布均匀的话,不需要建立索引。如果建立了,并不会使查询更快,反而写入更慢。 1/0 中的某个值只存在少量的时候。索引有效果。 从 MySQL 的索引机制来分析,MySQL 使用的是 B-Tree 索引。对于候选值较少的情况, 效果不佳。 当然,数据量很小的情况下,根本不需要索引。 参考: Should I create indexes on tinyint field types in mysql tables ...

阅读全文...

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 个字节的字符,而 emoji 则是以 4 个字节进行存储的。 所以要支持 emoji 则必须使用 Utf8mb4. 数据库与数据集表的 charset 是否需要同时设置 参考 http://stackoverflow.com/questions/24356090/difference-between-database-table-column-collation 如果数据表设置了 ...

阅读全文...

MySQL table engine

5.7 默认使用的是 InnoDB engine 常见的 engine 类型, MyISAM 与 InnoDB 的区别 大部分情况下,采用默认的 InnoDB 即可 InnoDB: The default storage engine in MySQL 5.7. InnoDB is a transaction-safe (ACID compliant) storage engine for MySQL that has commit, rollback, and crash-recovery capabilities to protect user data. InnoDB row-leve ...

阅读全文...

MySQL 中将 varchar 字段转换成数字进行排序

问题来源于 ecshop 的商品属性列表排序 bug。 includes/lib_goods.php 中是这样写的 'ORDER BY a.sort_order, g.attr_price, g.goods_attr_id'; 然而 attr_price 字段非常傻逼地使用了 varchar 类型,造成 51 这样的价格会排在 111 后面。 修复方法是将 attr_price 转换为数字再进行排序, *1 即可 'ORDER BY a.sort_order, g.attr_price * 1, g.goods_attr_id'; 测试了整型、浮点型、为 null (默认转换为0)都可以 ...

阅读全文...

MySQL 的事务

transaction logging 为了保证事务操作更高效,MySQL 不是直接更新磁盘上的对应数据,而是 首先更新磁盘上数据在内存中的 copy append 到 transaction log 中,使用 IO 的方式,避免了随机 IO 的耗时 一段时间后,由其他进程将内存中的更新 flush 到磁盘上 ...

阅读全文...

MySQL 慢查询定位

如何开启慢查询日志 编辑 my.cnf, 注意,需置于 mysqld 的 section 下 log_slow_queries = /tmp/mysql-slow.log long_query_time = 2 重启 mysql. 默认 SQL 语句超过 10 秒才算作慢查询,这里修改为 2 秒。 Why I could not alter the variable long_query_time variable at runtime 为何很简单的语句大部分时间运行很快,而偶尔很慢 buffer pool query_cache_size 参考: The MySQL Que ...

阅读全文...

MySQL 的那些锁

MySQL 锁的类型 shared locks (read locks): Read locks on a resource are shared, or mutually nonblocking: many clients can read from a resource at the same time and not interfere with each other. exclusive locks (write locks): Write locks, on the other hand, are exclusive—i.e., they block both read loc ...

阅读全文...

mysql

Quick Links mysql common types Mysql DBA 20天速成指南 为高性能而生的索引 高效的 MySQL GUI 工具 Ubuntu 上的 MySQL Workbench GRANT PRIVILEGE $ mysql -u root -p > GRANT SELECT ON db_test.table_test TO 'user_test'@'%' IDENTIFIED BY 'password'; or > CREATE DATABASE db_test; > GRANT ALL PRIVILEGES ON db_te ...

阅读全文...

使用 MySQL 实现任务队列

首先需要声明的是,这个标题是有问题的。因为用 MySQL 实现队列并不是一个好的选择。 之所以使用 MySQL 是因为想尝试一下。 在 Google 之前,先实践一下自己的思路 MySQL table 结构 task_queue - id - msg_id - created_at - finished_at 有三个 worker 负责发送消息, 每隔 5 秒钟来取一次 task。 需要防止的事情是, 两个以上 woker 取到同一个 task。 worker 流程 读取最旧的一条记录, 同时给该条数据打上标志,防止其他 worker 也能读到。所以,需要增加一个标志字段,statu ...

阅读全文...