随笔分类 - sql
摘要:最近频繁接到数据库服务器磁盘空间不足的告警,实际上数据库文件本身不大,主要是半年多累积的binary logs大,尤其是有主从配置的DB。查看了很多资料,总结了一下常用的专门针对binary logs的mysql命令:1. Binary logs 位置:1)查看/etc/my.cnf (Windows下为my.ini), 例如:log_bin=/var/mydb/bin-log如果该设置没带路径,就放在datadir=/var/lib/mysql 下2) 到数据库查看是否开启binary log 功能:mysql> show variables like 'log_bin'
阅读全文
摘要:授权给所有机器,user:service,password:some_passgrant all PRIVILEGES on *.* to service@"%" identified by "some_pass"; 严重禁止业务高峰期drop/alter table drop table最好先truncate table,减少hung时间IntroductionYou'llprobably find it necessary on occasion to redesign some of yourtables. A change in an a
阅读全文
摘要:一、假设你的表格有A、B、C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3二、在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:1、增加一列(假设是D列)2、在第一行的D列,就是D1中输入公式: =CONCATENATE("insert into table (col1,col2,col3) values ('",A1,"','",B1,"','",C1,"');")3、此时D1已经生成了如下的s
阅读全文
摘要:innodb中有两种索引,B+树索引和哈希索引,其中hash索引是自适应性的,存储引擎会根据表的使用情况自动创建哈希索引,不能人为的干涉1. 聚集索引聚集索引,innodb存储引擎表是索引组织表,即表中的数据是按照主键顺序存放,而聚集索引是按照每张表的主键构造出一颗B+树,并且叶子节点存放的是整张表的行记录数据,因此,叶子节点是数据节点,并且因为B+树的特点,数据节点通过一个双向的链表连接起来,使得查找更加快速,由于实际的数据页只能按照一颗B+树来存放,所以,一张表只能拥有一个聚集索引,在多数情况下,查询优化器倾向于采用聚集索引。实验先创建一张表 t ,这里以人为的方式让其每个页只能存放两行数
阅读全文
摘要:1. mysql数据库和其存储引擎innodb的各种类型文件有: 参数文件,日志文件,socket文件,pid文件,mysql表结构文件,存储引擎文件2. 参数文件 mysql实例启动的时候,会先到配置文件去读一些参数,用来寻找数据库的各种文件所在的位置,以及制定某些初始化参数,这些参数通常是定义内存结构多大等设置信息可以将参数看成是一个个的键值对,可以通过show variables 查看所有的参数,或者通过like过滤参数名。 mysql中参数可以分为两类:动态参数和静态参数,动态参数在mysql实例运行中进行设置,而静态参数说明在整个mysql 实例生命周期中都是不用也不能进行修改的,.
阅读全文
摘要:1. 事务也是数据库系统区别于文件系统的重要特性之一,在文件系统中,如果正在写文件,突然OS崩溃了,这是这个文件很有可能被破坏了(也有新的文件系统保证恢复,不被破坏)。 事务的目的:将数据库从一个状态转移到另外一个状态。事务用来保证数据库的完整性2. 事务的4个特性: 原子,一致,隔离,持久3. 事务的实现 原子,一致,持久都是通过数据库的redo和undo实现的4. redo,在innodb中,事务通过重做日志文件和innodb存储引擎的日志缓存来实现,当开始一个事务时,会记录这个事务的LSN(log sequence number,日志序列号),当事务执行时,会往innodb存储引擎的日志
阅读全文
摘要:由于书是从图书馆借来的,记下一些学习的过程,便于以后查看1. 锁是数据库区别于文件系统的重要特性之1,锁机制用于管理对共享文件的并发访问 innodb使用的是行级锁 myisam,使用的是表级锁,在并发条件下,读操作没有问题,但是并发插入会有性能上的影响 sql server 2005之前的版本都是页级锁的,相对于myisam言,并发访问上性能有所提高,在2005以及之后,sql server 支持乐观并发和悲观并发,在乐观并发下执行行级锁,但实现方式和与innodb不相同,在sql server中,锁是一种稀有的资源,而在mysql innodb中,锁没有相关的开销,可以同时得到并发性和一致
阅读全文
摘要:1. 一个简单的例子1.1. 创建表: create table t(s1 integer);1.2. 触发器:delimiter |create trigger t_trigger before insert on t for each row begin set @x = "hello trigger"; set NEW.s1 = 55;end; |1.3. 如果触发器创建错误,可能只能删除了,至少我试过不能replace drop trigger t_trigger;1.4. 当执行insert 时: insert into t values(1);1.5. 会执行触
阅读全文