数据库总结
数据库设计规范,数据库安装,使用,查询,优化等等
镜水灵动
读万卷书、行万里路、阅人无数、高人指路、贵人相助和自己去悟。
展开
-
mysql日志总结
(1)mysql的日志有哪些? ①错误日志error_log:记录Mysql启动,运行,停止期间的问题。 ②常规日志general_log:记录所有发向mysql的请求。 ③慢查询日志slow_query_log: 记录符合条件的查询。 ④二进制日志binary_log: 记录全部有效的数据修改日志。(非常重要,高可用,主从备...原创 2019-12-05 14:48:23 · 1240 阅读 · 0 评论 -
数据库的备份
1.总括:对于任何数据库来说,备份都是十分重要的。主从复制不能取代备份。主数据库删除一条记录,从数据库也删除,我们不能使用从服务器上的数据来回复删除的数据。只能从备份中恢复。备份按照形式:分为逻辑备份和物理备份。逻辑备份的结果为SQL语句,适合于所有的存储引擎,但是花费时间较长。物理备份通常是对数据库目录的copy,对内存表只备份结构。话费时间短。备份按照内存又可以分全量备份和增量备份。全量备份只...原创 2018-04-18 19:00:04 · 266 阅读 · 0 评论 -
sql慢查询以及删除备份
1.删除重复数据,保留最早的一条。步骤:(1)查看是否存在重复的数据select order_id, product_id, count(*) from product_commentgroup by order_id, product_id having count(*) > 1(2)备份表 CREATE TABLE bak_t_order_180417 AS SELECT * FROM...原创 2018-04-17 20:07:51 · 211 阅读 · 0 评论 -
Sql执行计划解析
1.我们怎么知道sql执行效果怎样哪?我们需要查询sql的执行计划。mysql优化器是怎样执行我们的请求的。 explain select * from user where username = 'lai' and password = 'lai';2.首先通过mysql执行计划,我们可以知道sql如何使用索引。虽然我们在列上加了索引,但是sql执行过程中未必走索引。所以我们需要...原创 2018-04-17 13:23:30 · 1379 阅读 · 0 评论 -
mysql性能优化
Mysql性能优化1. 为什么是mysql5.6?Mysql5.6的性能远远高于历史Mysql版本。我的Mysql version 5.6.26。2. 什么是优化:(1) 优化是多方面的,包括查询、更新、服务器等。(2) 性能优化:资源占用率低,系统运转速度快。3. 怎么优化3.1传统三范式与冗余涉及 (1)三范式:(牺牲时间换空间) ①第一范式...原创 2017-08-12 09:36:42 · 272 阅读 · 0 评论 -
mysql存储过程从表取数据存储到游标然后批量修改
delimiter $create PROCEDURE category()BEGIN DECLARE categoryName varchar(50); DECLARE parentId bigint(20); DECLARE itemId bigint(20); -- 遍历数据结束标志 DECLARE done INT DEFA...原创 2017-11-15 23:34:41 · 998 阅读 · 0 评论 -
MySQL行锁、表锁
一、SELECT FOR UPDATE二、使用InnoDB引擎三、Row-Level Lock 明确的的主键1.select * from user where id = 1 for update; 明确指定主键并且有结果集。2.select * from user where id = 0 for update; 明确指定主键并且无结果集。四、Table-Level Lock无明确的主键1....原创 2018-01-29 09:10:42 · 411 阅读 · 0 评论 -
centos7安装mysql流程
环境CentOS 7.1 (64-bit system)MySQL 5.6.24CentOS 安装参考:http://www.waylau.com/centos-7-installation-and-configuration/依赖MySQL 依赖 libaio,所以先要安装 libaioyum search libaio # 检索相关信息yum install libaio # 安装依赖包 成...转载 2018-03-26 09:34:18 · 251 阅读 · 0 评论 -
数据库命名规范
1.在表关联时:若两个关联字段类型不同,那么会进行查询的时候会进行隐式的数据类型转换。这样会导致索引失效。2.所有数据库对象名称必须小写3.命名要做到见名知意,禁止使用mysql保留关键字。4.临时表以tmp_开头,备份表以bak_开头并以时间戳结尾5.所有存储相同数据的列名和列类型必须一致。6.mysql5.5之前myisam是默认的存储引擎。所有表都必须使用Innodb存储引擎。5.6版本之后...原创 2018-04-14 18:29:20 · 349 阅读 · 0 评论 -
数据库索引规范
1.限制每张表上的索引量,建议单张表索引不超过5个。 索引并非越多越好!索引可以提高效率也可以较低效率。 索引可以提高查询效率,但是降低了修改和插入的效率。 mysql在优化查询时,会根据统计信息对每一个可以用的索引进行评估生成一个执行计划。若每一个索引都可以用于查询,那么增加mysql生成执行计划的时间,同样降低sql查询性能。2.禁止在表中每一列都建立索引。3.innodb是一个...原创 2018-04-14 19:38:04 · 3819 阅读 · 0 评论 -
数据库字段规范
1.优先选择符合存储需要的最小的数据类型:(1)将字符串转化为数字类型存储:以Ip地址为例:255.255.255.255。INET_ATON('255.255.255.255') = 4294967295INET_NTOA(4294967295)='255.255.255.255'节省更多存储空间。这样可以加载更多数据到缓存,提高命中率。(2).对于非负型数据来说,优先使用无符号整形来存储。表中...原创 2018-04-15 11:21:46 · 979 阅读 · 0 评论 -
数据库开发规范
1.建议使用预编译的语句进行数据库操作。 只传递参数,比传递sql语句更高效。 相同语句可以一次解析,多次使用,提高处理效率,还可以防止sql注入。2.避免数据类型隐式转换。隐式转换发生在where语句中,当列类型和参数类型不一致的时候就会出现。隐式转换可能导致索引失效。举个例子:select name, phone from user where id = '111'3.合理利用表上已有的索引而...原创 2018-04-15 14:35:16 · 220 阅读 · 0 评论 -
数据库操作行为规范
1.超过100万行的批量写操作,要多批次进行。 大批量写操作可能会造成严重的主从延迟。 大批量写操作会产生大量的日志。binlog日志为row格式时会产生大量的日志。 避免产生大事务操作。对表中大批量的数据进行锁定,从而产生阻塞。导致其他应用无法使用数据库,导致一系列 问题。2.对大表数据结构的修改一定要谨慎,会造成严重的锁表操作。尤其是生产环境时不能忍受的。 对于大表使用pt-onli...原创 2018-04-15 14:52:20 · 2798 阅读 · 0 评论 -
binlog write threshold exceeded
1.问题描述 线上报警:事务无法提交。binlog(1610646347 bytes) write threshold exceeded2.分析问题 (1)背景描述 MariaDB集群目前MariaDB binlog_write_threshold限制是1.6G,Percona无限制。max_binlog_size默认最大是1G,但是上...原创 2019-10-04 17:22:11 · 8970 阅读 · 0 评论