
mysql
文章平均质量分 58
imzoer
Tencent mason
展开
-
mysqladmin命令的用法
目前mysqladmin支持下列命令:create databasename 创建一个新数据库drop databasename 删除一个数据库及其所有表extended-status 给出服务器的一个扩展状态消息flush-hosts 洗掉所有缓存的主机flush-logs 洗掉所有日志 flush-tables 洗掉所有表 flush-privileges 再次装载原创 2012-12-12 13:22:29 · 3882 阅读 · 0 评论 -
inner join,outer join,left join,right join的区别
SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。连接类型 定义内连接 只连接匹配的行左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行全外连接 包含左、右两个表的全部行,原创 2012-06-01 11:09:24 · 829 阅读 · 0 评论 -
MySql中varchar(10)和varchar(100)的区别==>>以及char的利弊
一般初学会认为,二者占用的空间是一样的。比如说我存储5个char,二者都是实际占用了5个char了【勘误:varchar在实际存储的时候会多一个byte用来存放长度】。但是深入一下,设计数据库的时候,二者一样吗?答案是否定的【至少varchar类型需要在数据之前利用一个或者两个字节来存储数据的长度】【二者在内存中的操作方式也是不同的,下面的例子中有体现】。看下面的例子。如现在用户需要存原创 2012-12-25 23:08:34 · 49415 阅读 · 7 评论 -
Mysql的cpu占用居高不下的解决办法
1、先看个命令:SHOW [FULL] PROCESSLISTSHOW PROCESSLISTshows you which threads are running. You can also get this information using themysqladmin processlistcommand. If you have thePROCESSprivilege,原创 2012-09-30 15:36:09 · 11381 阅读 · 0 评论 -
数据库死锁的预防与解除
数据库死锁!!今天面的工行,传说中的只问项目不问技术,但是被问了这么深入的问题。是RP不行啊。死锁发生的条件:1、资源不能共享,需要只能由一个进程或者线程使用2、请求且保持,已经锁定的资源自给保持着不释放3、不剥夺,自给申请到的资源不能被别人剥夺4、循环等待---------------------------------------------------------原创 2012-10-11 14:30:26 · 19009 阅读 · 0 评论 -
Mysql存储过程
java 调用 mysql存储过程实例数据库的测试代码如下 :1、新建表testcreate table test(field1 int not null)TYPE=MyISAM ;insert into test(field1) values(1);2、删除已存在的存储过程-- 删除储存过程delimiter // -- 定义结束符号drop pr原创 2012-04-19 23:35:03 · 839 阅读 · 0 评论 -
MySql的内存使用
mysql的配置参数中,有的是指明全局的内存使用大小,有的是配置单个线程的内存大小。在mysql优化几点注意中我们提到了几个全局内存使用的参数和一个bulk_insert_buffer_size线程级配置的参数。下面补充学习一下这些参数。------------------------------全局内存使用---------------------------query_cach转载 2013-01-18 22:14:18 · 8626 阅读 · 0 评论 -
IO性能对MySql的影响
IO对于数据库来说,一直是瓶颈,并且在将来一段时间还会是。学习一下IO对mysql到底有多大的影响以及怎么选择IO模块。原创 2013-01-22 18:34:39 · 2513 阅读 · 0 评论 -
MySql中explain的时候出现using filesort,优化之
在使用order by关键字的时候,如果待排序的内容不能由所使用的索引直接完成排序的话,那么mysql有可能就要进行文件排序。【这个 filesort 并不是说通过磁盘文件进行排序,而只是告诉我们进行了一个排序操作而已】。当然,using filesort不一定引起mysql的性能问题。但是如果查询次数非常多,那么每次在mysql中进行排序,还是会有影响的。此时,可以进行的优化:1原创 2013-01-09 15:00:52 · 56813 阅读 · 1 评论 -
MySql中B+索引和ISAM索引介绍
名词:索引顺序存取方法ISAM—Indexed Sequential Access Method索引顺序存取方法(ISAM, Indexed Sequential Access Method)最初是IBM公司发展起来的一个文件系统,可以连续地(按照他们进入的顺序)或者任意地(根据索引)记录任何访问。每个索引定义了一次不同排列的记录。现在这个概念用在许多场合:特指IBM公司的ISAM原创 2013-01-22 20:10:47 · 7077 阅读 · 0 评论 -
源码安装mysql
从昨天下午到今天现在,耗时一天,终于成功了。文档在这里目的:要自己编译安装mysql,至少了解怎么增删组件。 安装过程分为configure、build、install、post config四个部分在configure步骤的时候,用到了cmake。遇到问题:缺少依赖的包。安装上依赖的包,rmCMakeCache.txt。然后再次cmake .。cmake命令如下:cm翻译 2012-12-27 20:26:22 · 917 阅读 · 0 评论 -
MySql中不等号的一点疑问:从为什么不等号有时也会用到索引说到“覆盖索引”
看表结构:mysql> show create table s;+-------+----------------------------------------------------------------------------------------------------------------------------------------+| Table | Create原创 2013-01-18 21:33:12 · 8163 阅读 · 1 评论 -
MySql中analyzetable和repair table的解释
首先是analyze table。ANALYZE TABLE analyzes and stores the key distribution for a table. During the analysis, the table is locked with a read lock for InnoDB and MyISAM. This statement works with Inno原创 2012-12-17 20:45:04 · 8494 阅读 · 0 评论 -
MySql中event使用
event类似一个job,在某个特定的时间或者间隔多少时间执行任务。http://blog.youkuaiyun.com/imzoer/article/details/8676610这篇博客里面最后有例子介绍了event的使用。原创 2013-01-06 17:46:49 · 723 阅读 · 0 评论 -
MySql中join操作
join的实现是采用Nested Loop Join算法,就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果有多个join,则将前面的结果集作为循环数据,再一次作为循环条件到后一个表中查询数据。具体例子可以看这里下面的例子演示了在使用join的时候,mysql利用join buffer。mysql> show原创 2013-01-09 16:24:40 · 3180 阅读 · 0 评论 -
MySql索引选择
mysql是根据什么来选择是不是使用一个索引呢?表df的name字段上有索引。看下面的两个查询:mysql> explain select name from df where name like 'a%';+----+-------------+-------+------+---------------+------+---------+------+------+-------原创 2013-01-23 15:02:19 · 1863 阅读 · 0 评论 -
MySql压力测试工具mysqlslap
这个工具是mysql自带的。其中,-uroot -proot 以及-h参数都是一样的,下面看一下一些特殊的并且比较重要的参数--number-of-queries=NLimit each client to approximately this many queries. Query counting takes into account the statement delimiter.翻译 2012-12-17 15:43:17 · 6744 阅读 · 0 评论 -
mysql连接不上,mysqld.sock丢失
如果你指定localhost 作为一个主机名【也就是你在本机上连接本季的mysql服务】, mysqladmin 默认使用Unix套接字文件连接,而不是TCP/IP。从MySQL 4.1 开始,通过--protocol= TCP |SOCKET | PIPE | MEMORY}选项,你可以显示地指定连接协议,举例如下:socket 连接:[zzz@zzz mysql]$ mysql -原创 2012-12-27 16:39:58 · 17862 阅读 · 2 评论 -
MySql批量drop table
今天发现数据库中很多没用的表,想清理掉。发现mysql好像不支持类似这样的写法:drop table like "%r"在oracle中,查了资料,是可以通过其他方式来实现:看这里【我顶!链接丢了!】那么想在mysql中实现,怎么做呢?两个思路:第一、修改mysql源码,在drop的时候加上like关键字支持。第二、写一个脚本,在数据库之外执行。------------原创 2013-01-06 11:15:41 · 19209 阅读 · 3 评论 -
MySql磁盘碎片
mysql当然也会产生磁盘碎片。在查看表的status的时候,会显示出来这个信息:Data_free字段Data_freeThe number of allocated but unused bytes.Beginning with MySQL 5.1.24, this information is also shown for InnoDB tables (pre原创 2012-12-13 14:45:41 · 3309 阅读 · 1 评论 -
Python操作MySql-pybatis的准备阶段(三)
直接看代码:#-*- encoding: gb2312 -*-'''Created on 2013-3-5@author: naughty'''import os, sys, stringimport MySQLdbtry: conn = MySQLdb.connect(host='localhost',user='',passwd='',db='test')原创 2013-03-05 18:17:00 · 1144 阅读 · 0 评论 -
【MySql源码分析】第一课
有点时间了。可以开始这个梦想了。有梦想,但是梦想是以显示为依托的,梦想的目的是什么呢?第一、分析源码要带着目的去分析。比如说要给drop命令添加一个like关键字使命令支持drop table like '%tb_%'。第二、通过阅读,理解一个如此大的开源软件是怎么架构的,包括各个引擎是怎么能在mysql中协作,插件是以什么形式来添加到mysql中的。第三、终极目的是能够在将来原创 2013-01-07 19:10:30 · 1188 阅读 · 0 评论 -
B+树索引-【高扇出性】
B+树索引在DB中有一个特点就是【高扇出性】【是什么意思?】,一般在DB中B+树的高度在2-3层左右。也就意味着只需要2-3次的IO操作即可。而现在的磁盘每秒差不多在100次IO左右,2-3次意味着查询时间只需0.02-0.03秒。聚集索引InnoDB存储引擎表是索引组织表,即表中数据安装主键顺序存放。而聚集索引就是按照每张表的主键构造一颗B+,并且叶节点存放着整张表的行记录数据,因此原创 2013-01-22 11:04:50 · 11750 阅读 · 0 评论 -
NaughtyBlog开发过程中用到的mysql触发器和job
在插入一篇文章的时候需要用到触发器更新archive表,把月份的文章数加一。create trigger add_archives_on_insert_article after insert on naughtyblog_article for each row beginSELECT new.date INTO @mdate;select year(@mdate) into @yea原创 2013-03-15 10:32:10 · 2407 阅读 · 0 评论 -
MySql索引的一个技巧
索引的建立,直接会影响到查询性能。看下面的查询:select * from ddd where id>1 order by score;我们查询学号大于1的学生的各科成绩得分。那么按照一般的思路,是这样建立索引的(id,score)。explain一下:mysql> explain select * from ddd where id>1 order by score;+原创 2013-01-21 12:02:34 · 2914 阅读 · 8 评论 -
MySql中explain之后,type字段和Extra字段中的index-区别
一个查询语句经过explain之后,type字段可能会出现index,Extra中可能会出现using index。那么二者有什么区别呢?他们是迥然不同的。type中的index,仅仅是说,查询类型index,表示本次查询仅仅扫描索引树,没有其他读取操作。Extra中的using index,意思是说,查询使用到了“覆盖索引”。关于覆盖索引,看这里-----------------原创 2013-01-23 14:14:49 · 7160 阅读 · 1 评论 -
mysql内存使用以及优化中需要的几点注意
1、从内存中读取数据是微秒级别的。而从磁盘读则是毫秒级别的。二者相差一个数量级。所以想优化数据库,第一个要做到的就是优化io。2、key_buffer_size[global]设置的内存区域大小缓存了myisam表的索引。由于myisam只缓存索引在内存中,并不缓存数据在内存,所以如果内存允许,要让这个参数足够能容纳所有myisam的所有索引来提高性能。另外,在myisam表上,尽量让所有的查原创 2013-01-15 23:07:08 · 6165 阅读 · 0 评论 -
MySql索引中,对NULL的处理
从网上学习的时候一直看到,mysql列建议列是非null的。说是如果是允许null的列,对索引会有影响(索引不会包括有NULL值)。原文如下:尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化。因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。-----------原创 2013-01-18 22:00:19 · 30309 阅读 · 5 评论 -
mysql分区功能
啊原创 2012-12-18 12:32:52 · 686 阅读 · 0 评论 -
从mysql表中随机取出几行数据
select * from a order by rand() limit m,n;上面这句话可以随机取出n条记录。但是效率非常差。有两种解决方法。第一、从根源上去解决。如果一定要随机取出n条记录,可以:1、取出表总条数n2、在应用程序中生成n个随机数(区间在0到n-1)3、去数据库中把这些记录取出来【这种方法思路上是存在缺陷的:如果生成的id在数据库中不存在...就.原创 2012-12-29 14:26:57 · 6712 阅读 · 0 评论 -
MySql函数总结
---------------------------------------字符串函数--------------------------------------concat函数:连接字符串的函数,select concat(deptid,‘ ’,if(sex,'男生','女生'),' ',stuname) from student;这个语句就只返回一个连接过后了的字符串。原创 2012-12-07 14:02:36 · 592 阅读 · 0 评论 -
Ubuntu下设置mysql用于远程访问
第一步: 激活网络设置编辑my.cnf,修改内容从以下行:[mysqld]你所需要:1. 确保skip-networking被删除或者屏蔽,否则不支持TCP/IP 访问2. 增加行bind-address = 192.169.169.128,替代192.169.169.128 为你mysql服务器的ip。保存并关闭配置文件重启mysql服务器:$sudo /et原创 2012-12-10 21:49:18 · 677 阅读 · 0 评论 -
MySql的flush用法
MySQL的FLUSH句法今天仔细看了下Flush语法,同时在工作中也经常使用Flush命令,在这儿汇总下。MySQL的FLUSH句法(清除或者重新加载内部缓存) FLUSH flush_option [,flush_option],如果你想要清除一些MySQL使用内部缓存,你应该使用FLUSH命令。为了执行FLUSH,你必须有reload权限。flush_option 可以是下列任何东西原创 2012-12-10 14:28:05 · 27257 阅读 · 1 评论 -
数据库收缩
数据库truncate之后,表清空了,但是表占用的磁盘空间却没有减小。此时需要做数据库收缩。原创 2012-12-10 10:56:36 · 674 阅读 · 0 评论 -
MySql的set和show
查看一个数据库的视图情况:show full tables in test where table_type like '%view%'上面的语句的功能是,查看test数据库中的所有视图。-----------------------------------------------------------上面的三行只是一个小插曲。不过也基础的表示了show功能的强大。show可以用原创 2012-12-06 21:52:32 · 956 阅读 · 0 评论 -
MySql中alter关键字的用法
alter用于修改数据库和表。alter database用于修改数据库全局特性。ALTER {DATABASE | SCHEMA} [db_name] alter_specification [, alter_specification] ...alter_specification: [DEFAULT] CHARACTER SET charset_name原创 2012-12-07 14:03:31 · 2758 阅读 · 0 评论 -
数据库内外连接、自连接
内连接:所有满足条件的记录才会出现在结果中。select emp.name,dept.addr from emp,dept where emp.deptid=dept.id->select emp.name dept.addr from emp inner join dept on emp.deptid=dept.id内连接上述两种写法都是可以的。其中第二种是正规写法。上面原创 2012-12-06 19:23:34 · 9944 阅读 · 0 评论 -
MySql中any、some、all关键字
ANY关键字:假设any内部的查询语句返回的结果个数是三个,那么,select ...from ... where a>any(...)->select ...from ... where a > result1 or a > result2 or a > result3ALL关键字:ALL关键字与any关键字类似,只不过上面的or改成and。SOME关键字:s原创 2012-12-06 17:57:14 · 14479 阅读 · 2 评论 -
Memcached深入
Memcached有一套自己的内存管理方式,而不是每次需要内存的时候就malloc,释放的时候就free。【slab=page】为了提高效率,它使用预申请和分组的方式管理内存空间。Memcached使用slab->chunk的组织方式管理内存。Slab可以理解为一个内存块,一个slab是memcached一次申请内存的最小单位,在memcached中,一个slab的大小默认为10485原创 2012-09-02 21:42:23 · 1761 阅读 · 0 评论 -
MySql直接命令行执行select和load导入导出数据
导出::select * into outfile 'd:/ad.txt' from a limit 100;导入:load data local infile 'd:/ad.txt' into table a lines terminated by '\n';原创 2012-09-13 11:22:20 · 4033 阅读 · 0 评论