MySQL数据库开发的36条原则】的更多相关文章

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/details/100173405 欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),验证通过后,输入关键字“加群”,加入华为云线上技术讨论群:输入关键字“最新活动”,获取华为云最新特惠促销.华为云诸多技术大咖.特惠活动等你来撩! 前言 这些原则都是经历过实战总结而成 每一条…
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),验证通过后,输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华为云最新特惠促销.华为云诸多技术大咖.特惠活动等你来撩! 前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员,在开发过程中务必注意 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏以后,才记得曾有人提醒过. 一.核心原则 1.尽量不在数据库做…
MySQL 数据库开发的 36 条军规 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 (2)控制单表数据量:单表记录控制在1000w (3)控制列数量:字段数控制在20以内 (4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据 (5)拒绝3B:拒绝大sql,大事物,大批量 (二)字段类军规 (6)用好数值类型 tinyint(1Byte) smallint(2Byte) medi…
最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库.今天也是对公司的开发做了一次培训,PPT就不放上来了,里面有十来个生产SQL的案例.因为规范大部分还是具有通用性,所以也借鉴了像去哪儿和赶集的规范,但实际在撰写本文的过程中,每一条规范的背后无不是在工作中有参照的反面例子的.如果时间可以的话,会抽出一部分或分析其原理,或用案例证明. 1. 命名规范 库名.表名.字段名必须使用小写字母,并采用下划线分割 MySQL有配置参数lower_case_tab…
PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a)   robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robbe.html i.  Robbe完整版本下载:Robbe完整版本(PHP测试程序, 开发帮助文档, WinNT下php各版本的dll文件)下载: http://code.google.com/p/robbe(“谷歌”无法使用) b) SCWS(简易中文分词) 基于HTTP/POST的分词 : htt…
原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包               -mysql-connector-java-5.1.7-bin.jar        2.准备参数               -url ()   链接url格式:(jdbc:mysql://主机名:端口号/数据库名字) 通常我们会在链接后添加编码方式: useUnicode=tr…
01-MySQL开篇 02-MySQL简单介绍 03-不同平台下安装MySQL 04-Windows平台MySQL密码设置与破解 05-Linux平台MySQL密码设置与破解 06-Mac平台MySQL密码设置与破解 07-统一字符编码 08-初识SQL语句 09-库操作 10-存储引擎介绍 11-表的增删改查 12-整数类型 13-日期类型 14-字符类型 15-枚举类型与集合类型 16-约束条件not null与default 17-约束条件unique key 18-约束条件promary…
前言: 设计规范更多的是为了确保数据库设计的合理性.为了项目最终的协调稳定性,而命名规范则更多的是为了确保设计的正式和统一. 约定优先于配置(Convention Over Configuration). 我们希望团队中所有人看到设计成果,一眼就可以明白这个字段是做什么的.代表的含义是什么,可以但不止于见名知意.再者,当前的开发模式,前后端代码及数据库文档.程序文档.接口文档等等大都是由工具生成,而其最底层的依据就是数据库,表.字段的命名注释同时会影响到工具生成的文档.代码中的类属性方法甚至是前…
mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的策略选择都可能导致系统性能甚至功能上的缺陷. 恰巧就在前几天,本人所在公司的云事业部举办了一场关于 mysql 的技术交流会,其中一个 part 正是聚焦于开发过程中 mysql 数据库设计及使用的常见问题,并提出相关优化方案.根据会议内容并查阅相关资料,本人对这个 part 进行了一次小结,结合自…
持续更新 BAE java开展mysql数据库 图文教程 BAE java语言发展mysql源码下载: 目前微信的发展.BAE开展.java开展.mysql教程开发非常,的介绍基于BAE平台.java语言和mysql数据库的微信开发教程.所以写了该教程,希望能给大家一点启示. 教程分为: 1.申请BAE账户: 2.在BAE平台建立webserver应用. 3.在BAE平台建立mysql数据库server应用: 4.使用eclipse开发基于BAE平台的处理微信消息的webserver系统. 5.…
mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的策略选择都可能导致系统性能甚至功能上的缺陷. 恰巧就在前几天,本人所在公司的云事业部举办了一场关于 mysql 的技术交流会,其中一个 part 正是聚焦于开发过程中 mysql 数据库设计及使用的常见问题,并提出相关优化方案.根据会议内容并查阅相关资料,本人对这个 part 进行了一次小结,结合自…
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011925175/article/details/24186917  有一个mysql数据库的表,要查询他的最后两条数据的结果例如以下: 这是原表中的内容: idname 1 ad 2 jk 3 tre  4 hgv 这是查询的最后两条的数据的内容(为最新的插入的数据):  语句:select * from demo1 order by id desc limit 0,2;  结果:id n…
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch()和executeBatch()这一对方法可以实现批量处理数据.不过值得注意的是,首先需要在数据库链接中设置手动提交,connection.setAutoCommit(false),然后在执行Statement之后执行connection.commit(). import java.io.Buffe…
一.核心军规 尽量不在数据库做运算,cpu计算的事务必移至业务层; 控制表.行.列数量([控制单张表的数据量 1年/500W条,超出可做分表],[单库表数据量不超过300张] .[单张表的字段个数不超过50个,多了拆表]) 三大范式没有绝对的要使用,效率优先时可适当牺牲范式  https://www.cnblogs.com/wdw31210/p/8574853.html 拒绝3B(拒绝大sql语句:big sql.拒绝大事物:big transaction.拒绝大批量:big batch); 二…
设计范式参看,DDL与DDL 库表基础规范 1.注释 每个表要添加注释,对 status 型需指明主要值的含义,如”0-离线,1-在线” 2.表的字段数量 单表字段数一般考虑上限为 30左右,再多的话考虑垂直分表,一是冷热数据分离,二是大字段分离,三是常在一起做条件和返回列的不分离. 表字段控制少而精,可以提高IO效率,内存缓存更多有效数据,从而提高响应速度和并发能力,后续 alter table 也更快. 3.所有表都必须要显式指定主键 如果没有主键或唯一索引,update/delete是通过…
  1.切换数据库 use blog; 2.显示当前数据库 所有的表. show tables; +----------------+ | Tables_in_blog | +----------------+ | test | | y2bg_article | | y2bg_category | | y2bg_link | | y2bg_user | +----------------+ 3.显示指定表的字段信息 desc y2bg_user; +----------+------------…
对规范的遵守可用二八原则,不要教条.为满足实际需求 可忽视部分规范. 1.索引规范 *目标 |--利用最小的索引成本找到需要的行记录 *原则 |--做前缀匹配 |--选择区分度高的列做前缀索引列 |--尽量使用重复索引 与where条件匹配 |--避免重复索引 |--索引列尽量包含 group by.order by所涉及的列 `--查询结果比较大时 考虑索引覆盖 2.SQL规范 *原则 |--避免大事务 减少等待和竞争 |--不要使用* 使用具体列名 |--遇到分页查询 使用延迟关联解决(如果…
从一下三个方面考虑: 库表设计 慢 SQL 问题 误操作.程序 bug 时怎么办 一.库表设计 1.1.引擎选择 在 MySQL5.1 中,引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运新的 MySQL服务器中.使用 MySQL插件式存储引擎体系结构,允许数据库专业人员或者设计库表的软件开发人员为特定的应用需求选择专门的存储引擎,完全不需要管理任何特殊的应用编码要求,也无需考虑所有的底层实施细节.因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的.此外,使用者可以在服务器…
关于字段的选择其实很多地方都有进行详细的介绍,我这里只写一下我在使用过程中的心得感受.如果想要全面的了解的话,大家可以去看高性能MYSQL这一本书籍,里面有一章节介绍的特别全面,基本涉及MYSQL中全部的字段的介绍. 我这里给大家介绍的就一些常用的字段,例如:int.float.double. decimal.varchar.char. date.datetime等八种常用的类型. 在数据库设计过程中我们要本着够用的原则,如果一味的把数据字段范围设为最大或者默认值的话,会导致存储空间大量的浪费.…
我的数据库环境是mysql Ver 14.14 Distrib 5.6.45, for Linux (x86_64) using EditLine wrapper 这个数据库是安装在T440p的虚拟机上的,操作系统为CentOs6.5. 我的数据表是这样的: CREATE TABLE `emp` ( `Id` ) NOT NULL AUTO_INCREMENT, `name` ) DEFAULT NULL, `age` ) DEFAULT NULL, `cdate` timestamp NULL…
本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 我的数据库环境是mysql Ver 14.14 Distrib 5.6.45, for Linux (x86_64) using EditLine wrapper 这个数据库是安装在T440p的虚拟机上的,操作系统为CentOs6.5. 插入一千万条数据,一次执行时间是4m57s,一次是5m. 数据表的定义是这样的: C…
1.当我们测试的时候需要大量的数据的时候,往往需要我们自己造数据,一条一条的加是不现实的,这时候就需要使用脚本来批量生成数据了. import pymysql import random import string # 建立数据库连接 mysql = pymysql.connect(host="数据库IP", user="数据库用户名",port=3306,password="数据库密码", charset='utf8', autocommit=…
最近想写mysql库,用到insert into语句,如何一次性将多条记录插入库表中呢. MySQLdb提供了两个执行语句的方法:一个是execute(),另一个是executemany() execute(sql) 可接受一条语句从而执行 executemany(templet,args) 能同时执行多条语句,执行同样多的语解码器可比execute()快得多,强烈建议执行多条语句时使用executemany templet:sql模板字符串, 例如: ‘insert into table(id…
create schema deepInMySql;use deepInMySql; -- 查看当前默认存储引擎show variables like '%table_type%'; -- 查看当前数据库支持的存储引擎show engines;show variables like '%have%'; -- myisam -- 创建表 aicreate table ai(i bigint(20) not null auto_increment,primary key (i))engine = M…
本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 这次实验的环境仍然和上次的一样,只是插入时间cdate改为一条增加一秒,代码如下: package com.hy.action; import java.io.Reader; import java.text.SimpleDateFormat; import java.util.ArrayList; import jav…
原文链接:http://blog.csdn.net/u013412790/article/details/51615407 数据库类型的选择对数据库的性能影响很大 1 . 数据类型会影响存储空间的开销 2 . 数据类型会影响数据查询性能 所以当一个数据类型可以有多种选择多种类型的时候,应该优先考虑数字类型,其次是日期或二进制类型,最后应该是字符类型.对于相同级别的数据类型,应该优先选择占用空间小的数据类型. 原理:在对数据进行比较(查询条件,JOIN条件及排序)操作时:同样的数据,字符处理往往比…
[数据库开发]在Windows上和Linux上配置MySQL的过程 标签(空格分隔): [编程开发] 首先是在Windows上尝试用QT进行MySQL数据库开发,结果总出现driver不能load的错误,一直没有改过来.后又直接尝试在Linux下进行MySQL开发,直接安装了三个包就可以使用了.下面记录这些过程. 在Linux下配置MySQL的过程 首先是安装mysql,以ubuntu为例: sudo apt-get install mysql-server mysql-client //安装过…
MySQL数据库文件 本文档从MySQL数据库和存储引擎层面介绍各种类型的文件. 参数文件(my.cnf) 错误日志(error log) 二进制日志文件(binary log) 慢查询日志(slow log) 全量日志(general log) 审计日志(audit log) 中继日志(relay log) Pid文件 Socket文件 表结构文件 InnoDB存储引擎文件 1. 参数文件 在MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始…
mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql-python.sourceforge.net/有下载和文档. 由于python的数据库模块有专门的数据库模块的规范,所以,其实不管使用哪种数据库的方法都大同小异的,这里就给出一段示范的代码: #-*- encoding: gb2312 -*- import os, sys, string impo…
Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password);   //打开一个到Mysql服务器的连接 mysql_select_db($dbname);    //选择Mysql数据库 mysql_query();   //发送一条mysql查询 mysql_fetch_assoc();  //读取返回的资源,返回一个以字段为下标的数组,相当于mysql_fetch_array('',MYSQL_ASSOC) mysql_fetc…