一.mysql中的优化 where语句的优化 1.尽量避免在 where 子句中对字段进行表达式操作select id from uinfo_jifen where jifen/60 > 10000;优化后:Select id from uinfo_jifen where jifen>600000; 2.应尽量避免在where子句中对字段进行函数操作,这将导致mysql放弃使用索引 select uid from imid where datediff(create_time,'2011-11…
1.   MyCAT概述 1.1 背景 随着传统的数据库技术日趋成熟.计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上.这时集中式数据库系统表现出它的不足: (1)集中式处理,势必造成性能瓶颈: (2)应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性不高: (3)集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差. 在这种形势下,集中式数据库将向分布式数据库发展. 1.2 发展历程 MyCAT的诞生,要从其前身Amoeba和…
在MySQL中数据的优化尤其是大数据量的优化是一门很大的学问,当然其它数据库也是如此,即使你不是DBA,做为一名程序员掌握一些基本的优化信息,也可以让你在自己的程序开发中受益匪浅.当然数据库的优化有很多的方方面面,本篇主要讲,Mysql的水平分表技术,也可以说是其技术的其中之一. 在使用水平分表时,首先问下自己几个问题. 第一.为什么要水平分表? 第二.什么时候需要水平分表? 第三.怎样实现水平分表? 一.为什么要水平分表? 简而言之,当单表数据量过大时,无法对其进行有效的维护,以及查询速度严重…
语言知识一种工具,甚至技术本身也只是一种工具,本身并不值钱,关键在于用于何种行业,产生了什么价值. 但从语言来看,我个人更喜欢php,然后是C#,然后是java从框架而言,先是java,然后C#,再次php从性价比来看,php最好,然后是java,最后是.net 从学习角度来看,java开源框架很多,学习java,你可以接触到更多很优雅的框架,和很多解决问题非常好的思路,会比较open.net入门很简单,语法很优雅,但框架相对比较封闭,开源社区不活跃php很简单,快速学习,快速开发,快速部署,非…
这里做的是我的一个笔记. 水平分表比较简单, 理解就是: 合并的表使用的必须是MyISAM引擎 表的结构必须一致,包括索引.字段类型.引擎和字符集 数据表 user1 CREATE TABLE `user1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `sex` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DE…
根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉:水平分表能够很大程度较少这些压力. 1.按时间分表 这种分表方式有一定的局限性,当数据有较强的实效性,如微博发送记录.微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按月分表.2.按区间范围分表 一般在有严格的自增id需求上,如按照user_id水平分表:table_1  user_id从1~100wtable_2  user_id从101~200wtable_3  user_i…
mysql语句的优化有局限性,mysql语句的优化都是围绕着索引去优化的,那么如果mysql中的索引也解决不了海量数据查询慢的状况,那么有了水平分表与垂直分表的出现(我就是记录一下自己的理解) 水平分表: 如上图所示:另外三张表表结构是一样的 只不过把数据进行分别存放在这三张表中,如果要insert 或者query 那么都需要对id进行取余 然后table名进行拼接,那么就是一张完整的table_name 但是如果我需要对name进行分表呢 或者对email呢? 那么就需要用MD5进行加密 因为…
TDSQL MySQL版(TDSQL for MySQL)是部署在腾讯云上的一种支持自动水平拆分.Shared Nothing 架构的分布式数据库.TDSQL MySQL版 即业务获取的是完整的逻辑库表,而后端会将库表均匀的拆分到多个物理分片节点. 水平分表 概述 水平拆分方案是 TDSQL MySQL版 的基础原理,它的每个节点都参与计算和数据存储,且每个节点都仅计算和存储一部分数据.因此,无论业务的规模如何增长,我们仅需要在分布式集群中不断的添加设备,用新设备去应对增长的计算和存储需要即可.…
数据库约束是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具.一般来说有以下几种实现方式:1.检查约束:通过在定义数据库表里,在字段级或者是在表级加入的检查约束,使其满足特定的要求.比如以下的表定义:CRATE TABLE student(id serial,name varchar(10),scrore integer CHECK (scrore > 0));定义分数不能小于0.也可以在表级定义:CHECK (字段1的条件(比如 字段1>100)2.非空…
最近开始复习mysql,查漏补缺吧. 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名.表名.列名这些标识符默认是区分大小写的:在之后的版本中默认不区分大小写. 2.MySQL不需要在单条SQL语句后加上分号,但是在特定的DBMS(数据库管理系统)可能必须加分号以此结束.如果使用的是MySQL命令行,必须加上分号来结束SQL语句. SELECT语句简单使用 SELECT COLUMNS FROM TABLE; 同时检索多列,字段名之间用英文逗号",&q…