0.mysql服务安装及启动
#yum install mariadb-server -y //如果已安装可以省略 #systemctl start mariadb.service //启动服务 #systemctl enable mariadb.service //开机启动服务 #mysql -u root -p //登录mysql #mysqladmin -uroot shutdown //关闭mysql服务1.linux连接mysql命令
#mysql -h 192.168.190.** -P3306 -u sonar -p Enter password: mysql>2.常看当前正在执行的进程:
show full processlist ;3.删掉某个正在运行的进程
kill ${id值};4.查询数据库word表posts占用的空间大小:
select concat(round(sum(data_length/1024/1024),2),'MB') as data_length_MB, concat(round(sum(index_length/1024/1024),2),'MB') as index_length_MB from information_schema.tables where table_schema='word' and table_name = 'posts';5.查询数据库引擎相应sql:
看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: mysql> show variables like '%storage_engine%'; 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table table_name;6.查询mysql优化配置是否生效
show variables like '%pool%';7.windows下mysql配置文件修改my.ini位置(引擎为innodb情况下,优化这些参数非常关键):
C:\ProgramData\MySQL\MySQL Server 5.7【官方网址】
https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html8.drop、truncate和delete的区别
1.作用及效果 drop>truncate>delete drop数据、索引、表都删除 truncate删除数据,不删除索引、表 delete只删除数据,不删除索引、表,可以一句条件删除 2.是否可恢复 delete可恢复,truncate、drop不可恢复 3.空间释放(表,索引,数据) drop释放所有空间 truncate释放表空间 delete不释放空间,不同引擎有不同的释放策略9.查看表创建信息,包括引擎|主键|自增等
show create table posts_js0210.查看数据库中的所有数据库用户:
select Host,User,Select_priv,authentication_string from mysql.user;11.创建数据库用户并授予允许的访问权限。
mysql>create user 'ry'@'%' identified by '123456'; 创建一个用户名为'ry'的用户,所有ip都可以访问,密码为:'123456'; %:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘ mysql> grant select,insert,update,delete,create on ry.* to ry; --用户授权数据库*代表整个数据库,将增删改查的权限授权个'ry'用户 mysql> flush privileges; --生效以上操作12.授权某个ip访问数据库服务 --192.168.190.*拥有root用户权限 MariaDB [mysql]> create user root@'192.168.190.*'; --将操作权限授予192.168.190.*的root用户 MariaDB [mysql]> grant all privileges on *.* to 'root'@'192.168.190.213' with grant option; --权限刷新 mysql> flush privileges;13.insert插入多条记录 insert into student(name) values('zhaoyi'),('qianer'),('zhangsan'),('lisi'),('wangwu');14.查看某个数据库下每张表的数据量大小
sql>use information_schema; sql>select table_name,table_rows from tables where TABLE_SCHEMA = '数据库名字' order by table_rows desc;15.查询mysql引擎情况
mysql> show engines;16.msyql命令行清屏幕 mysql> system clear;17.mysqldump命令备份DB及mysql命令还原DB 备份 # mysqldump snorby -uroot --password='your db password' > /tmp/snorby.sql # mysqldump snorby -uroot -p > /tmp/snorby.sql 如上两种方式效果一样,但第二条更安全。 通常备份出来的文件,要比库目录实际占用的空间要大,因为多了一些创建表和insert语句。还原到一个无密码的数据库中 # mysql snorby -uroot < /var/lib/mysql/snorby.sql be carefull,符号是小于号,方向不要搞反了,数据被清空,可就歇菜了。18.查看mysql数据文件存储位置
mysql> show variables like '%datadir%';19.查看mysql数据库占用空间大小 mysql> select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='snorby'20.查询表中的索引
mysql> show index from event;21.导出单个数据表结构和数据 #mysqldump -h localhost -uroot -p database table > dump.sql22.导出整个数据库结构(不包含数据) #mysqldump -h localhost -uroot -p123456 -d database > dump.sql23.创建索引 对表event创建一个针对signature,timestamp列的联合索引,索引的名字为是,signature_timestamp mysql>create index signature_timestamp on event (signature,timestamp);【实操异常处理】
1.Ignoring query to other database 重新连接mysql 加上-u参数即可2.优化Copying to tmp table on disk 这两个参数值可以设置成一样大小,具体设置多大根据自己服务器的内存大小进行设置,不要超过服务器内存的一半。 例子中给出的设置是2G。 mysql>set global tmp_table_size=2147483648; mysql>set global max_heap_table_size=2147483648; 【优化前:】event表有800万数据【优化后】查询响应时间提升了2倍
【但是】依然很慢,是否可以继续优化? 当然可以,那就是创建针对查询的两个字段的联合索引,效率由提升了一倍,哈哈! 不过要注意,线上生产环境数据量如果非常大的话,创建索引会是一个非常漫长的过程,会影响生产环境的正常访问。 不过使用pt-online-schema-change工具可以在线给表建索引,而不影响生产环境的正常使用,问题迎刃而解。 【官方网址】https://dev.mysql.com/downloads/mysql/
https://downloads.mysql.com/archives/community/