#删除50w数据 mysql> delete from user limit 500000; Query OK, 500000 rows affected (3.70 sec) #分析表统计信息 mysql> analyze table user; +---+---+---+---+ | Table | Op | Msg_type | Msg_text | +---+---+---+---+ | test.user | analyze | status | OK | +---+---+...
"rows_to_scan": 3100, "access_type": "scan", "resulting_rows": 3100, "cost": 717, "chosen": true } ] }, "condition_filtering_pct": 100, "rows_for_plan": 3100, "cost_for_plan": 717, "chosen": true } ] }, { "attaching_conditions_to_tables": { "original_condition": "(...
#删除50w数据 mysql> delete from user limit500000; Query OK,500000rows affected (3.70sec) #分析表统计信息 mysql> analyze table user; +---+---+---+---+ | Table | Op | Msg_type | Msg_text | +---+---+---+---+ | test.user | analyze | status | OK | +---+---+---+...
使用全局锁,整个数据库就处于只读状态了,这时其他线程执行以下操作,都会被阻塞: 对数据的增删改操作:比如insert、delete、update等语句; 对表结构的更改操作:比如alter table、drop table等语句。 // 添加全局锁 flush tables with read lock // 释放全局锁 unlock tables 会话断开,全局锁会被自动释放。 全局锁的...
STARTTRANSACTION;-- 开始一个事务SELECT*FROMyour_tableWHEREconditionLIMIT1FORUPDATE;-- 上锁-- COMMIT; -- 提交事务-- 或者-- ROLLBACK; -- 回滚事务 SELECT ... FOR UPDATE走的是IX锁(意向排它锁) 即在符合条件的rows上都加了排它锁,其他session也就无法在这些记录上添加任何的S锁或X锁。
-> master_user='repl', -> master_password='123456', -> master_log_file='mysql-bin.000001', -> master_log_pos=977; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.01 sec) mysql> show slave status\G *** 1. row *** _IO_...
rows代表这个步骤相对上一步结果的每一行需要扫描的行数,可以看到这个sql需要扫描的行数为35773*8134,非常大的一个数字。本来c和h表的记录条数分别为40000+和10000+,这几乎是两个表做笛卡尔积的开销了(select * from c,h)。 于是我上网查了下MySQL实现join的原理,原来MySQL内部采用了一种叫做 nested loop join...
SELECT[ALL | DISTINCT | DISTINCTROW ][HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT][SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]select_expr [, select_expr ...][FROM table_references[PARTITION partition_list][WHERE where_condition][GROUP BY {co...
先介绍下索引的分类,方便后续介绍索引的创建与设计。 按照功能逻辑划分,索引主要有:普通索引、唯一索引、主键索引、全文索引、空间索引(并非所有数据库都有空间索引) 按照物理实现划分,索引主要有:聚簇索引、非聚簇索引。 按照作用字段个数划分,索引可以分为单列索引和联合索引。
DELETE、 UPDATE、 SELECT等。 SELECT是SQL语言的基础,最为重要。 1. 插入数据 INSERT INTO … VALUES 1.1 方式1:VALUES的方式添加 使用这种语法一次只能向表中插入一条数据。 情况1:为表的所有字段按默认顺序插入数据 INSERT INTO 表名 VALUES (value1,value2,...); 1...