0%

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。 经过对MySQL InnoDB的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。

阅读全文 »

数据库命令规范

  1. 所有数据库对象名称必须使用小写字母并用下划线分割

  2. 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)

  3. 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符

  4. 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀

  5. 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)

    阅读全文 »

1
2
3
4
5
6
7
mysql -hlocalhost -uroot -p
-h数据库主机
-u用户
-p密码
-P端口号(大写P)

mysql -h localhost -u joinhealth -P 3306 -p

查看当前数据库列表–显示数据库

1
show databases;

选择数据库

1
use database_name;

问题sql背景:项目有6个表的要根据pid字段要写入对应的brand_id字段。但是这个其中有两个表是千万级别的。我的worker运行之后,线上的mysql主从同步立刻延迟了!运行了一个多小时之后,居然延迟到了40分钟,而且只更新了十几万行数据。

阅读全文 »

1
2
3
4
5
6
7
SELECT
*
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = '{db_name}'
AND table_name = '{tab_name}';
1
2
3
4
5
6
7
SELECT
concat(round(sum( data_length / 1024 / 1024 ),2 ),'MB' )
FROM
information_schema.PARTITIONS
WHERE
table_schema = 'db_name'
AND table_name = 'tab_name';