对码当歌,猿生几何?
#最热 #最新

MySQL的事务隔离级别及MVCC机制

MySQL实现了四种隔离级别,分别是读未提交(RU)、读已提交(RC)、可重复读(RR)和串行化读(SERIALIZABLE)。读未提交(RU):不管其他事务是否提交更新都可以实时看到最新数据,隔离级别最低,脏读的问题没有解决,更别说可重复读和幻读了。读已提交(RC):只可以看到其他事务已经提交事务后的更新,解决了脏读的问题,但没有解决可重复读和幻读。可重复读(RR):在事务中的任何时间点看查询到的数据都是一样的,解决了脏读和可重复读的问题,但没有解决幻读的问题。串行化读(SERIALIZABLE)所有数据库请求都只用一个线程执行,不管读写并发的事情,所以在这个隔离级别下隔离效果最好,性能最差。相关概念解析脏读:同时两个事务A和B,  A修改了记录1 ,同时B读取了记录1,此时A记录回滚,那么B读到的就是一条未提交的脏数据,RU级别就会出现 查看全文

【MySQL】数据类型之字符相关--2019-08-06 15:25:13

        nblogs-markdown">原创链接: http://106.13.73.98/__/22/目录字符类型char类型varchar类型实测总结枚举类型与集合类型字符类型官网:https://dev.mysql.com/doc/refman/5.7/en/char.html注意:char与varchar括号内的参数指的是字符的固定长度char类型定长,简单粗暴,浪费空间,存取速度快字符长度:0 ~ 255(一个中文是一个字符,是utf8编码的3个字节)例如:指定长度为10,存>10个字符则报错,存<10个字符则用空格填充直到凑够10个字符存储.检索:在检索时,显示的结果会自动删除尾部的空格,除非打开pad_char_to_full_length SQL模 查看全文

SQL笔记

##JDBC> JAVA Database Connectivity java 数据库连接* 为什么会出现JDBC> SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。 ###使用JDBC的基本步骤1. 注册驱动        DriverManager.registerDriver(new com.mysql.jdbc.Driver());2. 建立连接 &nb 查看全文

设计模式之建造者模式

今天学习了建造者模式,核心就是构建和表示分离。如果一个对象组成部分相对稳定,构建过程千变万化,则其可以采用建造者模式。建造者模式的核心思想:构建和表示分离在建造者模式中,分为三个部分:指导者,虚拟的建造者,实际的建造者指导者:指导建造者进行建造,通用方法为构造方法虚拟建造者:抽象出对象所必须的方法 将建造过程抽象化实际的建造者:也可以称之为真实的建造者 可以进行对象的逐步建造在这里我以电脑的构建为例,写了一个真实样例,以便方便自己理解建造者模式;在我的设计中:1.Engineer充当的是指导者的角色--->Director2.Firm充当的是抽象的建造者,声明了建造者所必须的一些方法或者步骤---->Builder3.SAMSUNG是真实的建造者,实现了抽象建造者的方法,进行产品的构建---->ConcreteBuilder4.Co 查看全文

MySql中distinct的用法

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了。。。。。。。。。 下面先来看看例子:      table    id name    1 a  &n 查看全文

linux安装mysql

//centos7 mysql创建 1.安装必要的组件: yum install –y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc-c++ libaio libaio-devel bzr bison libtool ncurses5-devel     2.下载安装包(安装包默认下载到当前目录): wget https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz     3.移动到/usr/local目录下,可以使用远程连接工具,也可以使用命令 先使用ls 查看当前目录是否已经下载了安装包,如果下载了,就使 查看全文

MySql中的count、NULL和空串的区别

        nblogs-markdown">**1、count (1)、count (*) 与 count (列名) 的区别**表count(1)count(*)count (列名)作用统计表中的所有的记录数会统计表中的所有的记录数统计该字段在表中出现的次数是否包含字段为 null包含包含不包含区别count (1) 和 count (*) 基本没差别,实际建议count (*)count (1) 和 count (*) 基本没差别实际建议count (*)效率:列名为主键,count (列名) 会比 count (1) 快列名不为主键,count (1) 会比 count (列名) 快如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)如果有主键,则 sele 查看全文

修复ubuntu 安装mysql后必须使用sudo问题

修改root用户查看用户的权限,是否是mysql_native_password,如果不是,则将auth_sock改为mysql_native_password。update user set plugin = 'mysql_native_password' where user = 'root';或者执行下面语句,这样就不需要执行Step2的内容啦!ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 然后 flush privilege;退 查看全文
加载更多

hive默认分隔符

hive的默认分割符,hive使用不可见的字符作为分割符,如下表。分隔符描述\n行分隔符^A字段分隔符,八进制表示为\001, ^Barray或struct中为元素分隔符,map中为key-value分隔符\002^Cmap中为key和value间的分隔符\003php中使用是使用分隔符的八进制表示方式,并使用双引号引住。eg,implode("\001", $arrFields);vim中:set list可以查看到hive数据文件的默认分隔符显示指定创建表时的默认分割符。eg,create EXTERNAL table IF NOT EXISTS tbl_test (   id   &nb 查看全文

hive中常用的UDF函数总结

1、类型转换cast(expr as <type>)  如: cast('1' as BIGINT) 字符串转换为数字2、if语句if(boolean testCondition, T valueTrue, T valueFalseOrNull)如果 testCondition 为 true 返回 valueTrue, 否则返回 valueFalse 或 Null如: if(1 == 1, 1, 2) 结果为13、case语句CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END如:case when a == b then b when a == c then c else d end4、字符串连接concat(stri 查看全文

MySQL索引优化(四)—— 范围查询优化

范围查询可以通过一个索引的单个或者多个索引值的区间来检索数据记录,也适用于符合索引。下面就区间是怎么样从where子句中被提取出来的作出详细解释。使用单值索引的范围查询对于单值索引来说索引值的区间能够很好地通过where子句中的相应条件很好的表示出来。单值索引的范围查询被定义为:对于BTree索引和Hash索引来讲,包含索引键和 =, <=>, IN(), IS NULL 或者 IS NOT NULL 这些操作符的比较此外对于BTree索引来讲还包含索引键和 >, <, >=, <=, BETWEEN, !=, 或<>, 或 LIKE不以通配符开头的 这些操作符的比较对于所有的索引类型,多个索引条件用 or 或者 and 组合的单个范围查询下面这些是范围查询SELECT * FROM 查看全文

MySQL索引优化(五)—— WHERE语句优化

平常我们可能会牺牲可读性来使计算变得更快而重写SQL。其实MySQL会做类似的优化操作,我们大可以避免这个工作,尽量在写SQL的时候更关注可维护性和可读性。MySQL通常会做对WHERE语句做下述的优化:1、移除不必要的括号   ((a AND b) AND c OR (((a AND b) AND (c AND d)))) -> (a AND b AND c) OR (a AND b AND c AND d)2、常量合并(a<b AND b= 查看全文

transform语句中使用php编写map-red脚本

transform语句中使用php编写map-red脚本1、编写hql-- 集群上php的执行环境 set mapred.cache.archives=hdfs://host:port/pathtophp/php.tgz#home; set mapred.job.priority=VERY_HIGH; -- 添加的本地文件 add file /pathtoscript/script.php; SELECT   transform(val1, val2,...)  -- 列的分隔符   ROW FORMAT DELIMITED FIELDS TERMINATED BY&nbs 查看全文

MySQL索引优化(二)—— B树索引和hash索引的对比

B-Tree索引的特征B-Tree索引可以使用比较表达式,包括 =, >, >=, <, <=,  BETWEEN等表达式,还可以使用 like表达式(1、不能以 % 等通配符开始,2、而且必须是常量字符串)。 下面的两条sql会使用索引SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; SELECT * FROM tbl_name WHERE key_col LIKE 'Pat%_ck%';下列的sql不会使用索引-- 以 查看全文

MySQL索引优化(一)

主键优化主键可以是表的一个列或者是多个列,有一个关联的索引。利用主键查询是非常快的。主键查询对于not null的优化是非常棒的,因为主键不允许有null值。在InnoDB存储引擎中,一张表的数据基于主键存储。如果你的表非常大而且特重要,但却没有一个有明显特征的列或者列的集合作为主键。你需要单独创建一个自增列(auto-increment )作为主键。那些唯一键可以作为join表时的外键使用。外键优化如果一张表有一些字段,你常用来组合查询一些数据,这时候应该将那些低频的字段单独得地拆分为一张表,并在主表中使用外键与之关联。这样,每张小表会拥有自己的主键,可以快速的查询它自己的数据,也可以通过join操作来查询其他需要的字段。查询的IO和耗费的内存,最终取决于数据是如何分布的,因为在磁盘中相关的字段是被打包在一起存储的。通常情况下,查询是尽可 查看全文

MySQL索引优化(三)—— 索引的合并

索引合并查询是指将多个范围扫描合查询的结果合并为一个结果集。索引合并这种访问方式适用于单表查询,不适用与多表查询。在查询的时候会产生并集、交集或者是交并集的操作。索引合并查询的例子SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20; SELECT * FROM tbl_name   WHERE (key1 = 10 OR key2 = 20) AND non_key = 30; SELECT * FROM  查看全文
加载更多