0%

数据库命令规范

  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';

1
source   d:/myprogram/database/db.sql

导入sql文件过慢,解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql -u root -p -h 127.0.0.1
mysql>use cloud_followup_gfe;
Database changed

mysql> set global innodb_flush_log_at_trx_commit=0;
Query OK, 0 rows affected (0.03 sec)

mysql> set global max_allowed_packet=1024*1024*20;
Query OK, 0 rows affected (0.00 sec)

mysql> set global bulk_insert_buffer_size=32*1024*1024;
Query OK, 0 rows affected (0.00 sec)

mysql> set global innodb_buffer_pool_size=32*1024*1024;
Query OK, 0 rows affected, 1 warning (0.09 sec)

>mysql source /root/test.sql