Has 2.6.1 ever used Linux? What do you use it for?
Linux is a relatively stable operating system for a long time, so we usually take him as a server (Web,db,app, etc.).
Linux itself has a C compiler environment, some of our software is not package (Redis, etc.), need to compile in the Linux C compiler environment to get packages
2.6.2 say some of the common commands under Linux
Common:
PWD Gets the current path
CD Jump to Directory
Su-u Switch to Administrator
LS Enumeration Directory
File Operations Command:
File
Tail view
RM-RF Delete
Vim modification
Folder
mkdir Create
Rm-r Delete
2.6.3 What you use to connect to a remote Linux server
The connection remote needs to rely on the Linux server installs the SSH service side, generally this SSH service port is 22
The connection remote needs to rely on the Linux server to install the SFTP service side, generally this SFTP service port is 25
Using an SSH client to connect to a Linux server is a bit like a remote connection under Windows, but Linux has no graphical interface after SSH connection, all commands.
Putty
Xshell
Use the SFTP client to connect to the SFTP server to upload and download files. (Upload the installation package, modify the configuration file upload.) )
WinSCP
Xftp
Two common combinations in the enterprise:
Putty+winscp
Xshell+sftp+manager
Interview: Use Xshell, putty and other SSH client to connect the server, use Xftp, WINSCP and other SFTP client to upload and download files, connect and upload, download must depend on the server SSH, SFTP service, that is, the Linux server needs to start the two services.
2.6.4 have you ever used a cloud host?
Used, in the original company, we didn't use our own server, but rented Ali's cloud host.
Not used, but somewhat understood.
Cloud Host is a number of cloud service operators (Ali, Huawei, Western Digital, Sina, etc.), to provide remote server functions, our developers or enterprises only need to pay on demand to rent the corresponding server.
Use SSH and SFTP for operation
Has 2.6.5 done anything about database optimization?
have done MySQL database optimization, other databases are similar
Find, locate slow queries, and optimize
Optimization means:
1, create the index: Create the appropriate index, we can query in the index, query to find the corresponding record directly.
2, sub-table: When the data of a table is more or a table of some of the field value is more and rarely used, the use of horizontal and vertical tables to optimize.
3, read and write separation: When a server can not meet the requirements, the use of read-write separation of the way to cluster.
4. Caching: Using Redis for caching
5. Some common optimization techniques
2.6.6 Find slow queries and locate slow queries?
Before the project self-test, start the MySQL database with a slow query, and write the slow execution of the statement to the log, after a certain period of time, by viewing the log to find the slow query statement.
Use the explain slow query statement to analyze the problem of the statement in detail
The following paradigm of 2.6.6 database optimization
How the database is designed to be followed
What kind of table is 3NF (normal)
The form of the table is first in line with 1NF to meet the 2NF and further meet the 3NF
1NF: That is, the column of the table is atomic, non-divisible, that is, column information, can not be decomposed, and the database is a relational database (Mysql/oracle/db2/sybase/sql server), automatically meet the 1NF, the relational database is not allowed to split columns.
2NF: The records in the table are unique, usually we design a primary key to implement
3NF: The table does not have redundant data, that is, the information of the table, if it can be deduced, it should not be designed to separate a table field to store.
Anti-3NF: No redundant database is not necessarily the best database, sometimes in order to improve operational efficiency, it is necessary to reduce the paradigm standard, the proper retention of redundant databases, the practice is: in the conceptual database model design to abide by the third paradigm, reduce the standard of the normal work to the physical data model design considerations, Lowering the paradigm is adding fields, allowing redundancy. For example: order and Order items, album views, and number of photos viewed
2.6.7 Choosing the right storage engine
In development, we often use the storage engine myisam/innodb/memory
MyISAM Storage Engine
If the table is not high on things, but also to query and add the main, we consider using the MyISAM storage engine, such as BBS in the posting table, reply to the table.
InnoDB Storage Engine:
High transaction requirements, the data is important data, we recommend the use of InnoDB, such as order form, account form
Memory Storage Engine
Our data changes frequently, do not need storage, but also frequent query and modification, we consider using memory, very fast.
Ask the difference between MyISAM and InnoDB (important)
1. Transaction security MyISAM does not support transactions and InnoDB support
2, query and add speed MyISAM do not need to support transactions to consider the synchronization lock, query and add faster
3, support full-text search MyISAM support, InnoDB not support
4, lock mechanism MyISAM support table lock, INNODB support row lock
5, foreign key MyISAM does not support foreign keys, INNODB support foreign keys (usually not set foreign keys, usually in the program to ensure the consistency of the data)
2.6.8 database optimization To create an appropriate index
Index is a data structure that helps the DBMS efficiently obtain
Category: Normal index/UNIQUE index/PRIMARY key index/full-text index
Normal index: Allow duplicate values to appear
Unique index: Other than normal index (user name, ID, Email,tel) except for duplicate records
Primary KEY index: is created with the primary key set, that is, when a column is set as the primary key, the database will create an index to the column, which is the primary key index, unique and no null value
Full-Text indexing: Used to index text fields (Char,varchar,text) in a table, full-text indexing for MyISAM
Explain select * from Articiles match (title,body) against (' database ') will use full-text indexing
2.6.9 Index Use Tips
Index Disadvantages:
1. Occupy Disk space
2, the DML (insert, modify, delete) operation has influence, slow
Usage scenarios:
A, must be used frequently in the where condition, if do not make the query there is no meaning
b, the field content is not unique to several values (sex)
C, field content does not change frequently
Specific tips:
1, for the creation of multi-column index (composite index), not the first part of the use of the index will not be used
ALTER TABLE Dept Add index My_ind (dname, loc); Dname the left column, Loc is the right column.
Explain select * FROM dept where dname = ' aaa ' is used to index
Explain select * FROM dept where loc = ' AAA ' is not used to index
2. For queries that use like, the query will not use the index if it is '%aaa ', and ' aaa% ' will use the index
Explain select * FROM dept where dname like '%aaa ' does not use the index
Explain select * FROM dept where dname like ' aaa% ' will use the index
Therefore, in the like query, the keyword can not use a character such as% or _, if must be preceded by a change in value, then consider using full-text index
3. If there is or in the condition, the index is not used, even if the conditional index is not used, in other words, all the fields required for use must be used independently.
Explain select * FROM dept where dname = ' aaa ';
Explain select * FROM dept where loc = ' AAA ';
Explain select * FROM dept where deptno = ' 102 ';
SELECT * FROM dept where dname = ' xxx ' or loc = ' xx ';
SELECT * FROM dept where dname = ' xxx ' or deptno = 45;
SELECT * FROM dept where dname = ' xxx ' or loc = ' xx ' or deptno = ' 45 ';
4. If the column type is a string, be sure to reference the data in quotation marks in the condition, otherwise the index will not be used.
Explain select * FROM dept where dname = ' 111 ';
Explain select * FROM dept where dname = 111; Numeric Auto-turn string
Explain select * FROM dept where dname = DDD; Error
5. If MySQL estimates that a full table scan is faster than using an index, the index is not used
There's only one piece of data in the table
2.6.10 Database Optimization sub-table
Sub-table divided into horizontal (by row) table and vertical (by column) table
According to experience, MySQL table data generally reach millions, query efficiency will be very low, easy to cause table lock, and even piled up a lot of connections, directly hanging off; the horizontal table can greatly reduce these pressures. Tables are divided by row data.
If the value of a field in a table is very numerous (long text, binary, and so on), it is queried only in rare cases. At this point, multiple fields can be placed in a single table, associated with a foreign key. Vertical sub-table.
Exam details, generally we only focus on points, not attention to details.
Horizontal sub-table strategy:
1. By Time table
This type of table must have certain limitations, when the data has a strong high efficiency, such as micro-Bo send records, message records, and so on, this data very few users will query the forehead data for several months, such as the monthly table can be divided.
2. Divide the table by the interval range
Generally in a self-increasing ID requirements, such as according to the user_id level of the table
Table_1 user_id from 1~100w
Table_2 user_id from 101~200w
Table_3 user_id from 201~300w
3.hash Sub-table
The table name of the data store table is computed by a certain hash algorithm through the ID or name of the original target, and then the corresponding table is accessed.
10 sheets as follows
Read/write separation of 2.6.11 database optimization
A database supported by the maximum number of concurrent connections is limited, if the user concurrent access too much, a server can not meet the requirements of the cluster processing, MySQL cluster processing technology is most commonly used is read and write separation.
Master-Slave synchronization
The database will eventually persist data to disk, and if the cluster must ensure that the data for each data server is consistent, the operations that can alter the database are written to the primary database, while the other databases synchronize the data from the primary database.
Read/write separation
Use load Balancing to implement write operations to the main database, and read operations to the server.
2.6.12 Database Optimization Cache
A cache layer is added between the Persistence Layer (DAO) number database (db), and if the data accessed by the user is cached, fetched directly from the cache layer when the user accesses it, without accessing the database, and the cache is operating at the memory level, the access speed is fast
Role: Reduce the database server pressure, reduce time.
Common caches in Java are,
1.Hibernate level Two cache, the cache cannot complete the distributed cache
2. You can use Redis as the central cache.
2.6.13 Statement Optimization Tips
DDL Optimizations:
1, by disabling the index to provide import data performance, this operation is mainly for the table with the database, append data
Remove key
ALTER TABLE test3 disable keys;
BULK INSERT Data
INSERT INTO TEST3 select * from test;
Recovery key
ALTER TABLE test3 enable keys;
2, close the only test
Set Unique_checks=0 off;
Set Unique_checks=1 open;
3, modify the transaction submission Method (import) (change multiple times to submit as once)
Set Autocommit=0 off
Set Autocommit=1 Open
DDL optimization
INSERT into test values (from);
INSERT into test values (1,3);
INSERT into test values (1,4);
Combine multiple strips into one
INSERT into test values (1,3), (1,4);
DQL optimization
Order by optimization
1, multi-use index sorting
2. General result sort (non-indexed sort
Group BY optimization
is to use ORDER by NULL to cancel the default sort)
Sub-query optimization
Find customers who are not in the payment list on the customer list
Find customers who are not in the payment list on the customer list, and inquire about customers who have not bought anything
Explain select * from the customer where customer_id not in (select distinct customer_id from payment) #子查询--This kind of thing is based on the Func outer chain
Explain select * FROM customer C left joins payment p on (c.customer_id=p.customer_id) where p.customer_id null--This kind of thing is based on the "index" Outer chain
or optimization
High performance with or on two independent indexes
1, or both sides are judged by the index field, good performance
2, or both sides, there is no side, poor performance
3, if the employee table name and email These two columns is a composite index, but if it is: Name= "A" or email= "@" this way, will not use the index!
Limit optimization
Select Film_id,description from film order by title limit so,s;
Select A.film_id,a.description from film a INNER join (select film_id from film order by title limit so,s) b on a.film_id=b . film.id;
2.6.14 BULK INSERT millions of data how to implement
Principle:
1, change multiple times to submit as one
2. Use batch operation
2.6.15 ever used Redis? What is Redis?
Redis is a key-value nosql database that is stored in memory, persisted to disk based on a certain policy, and does not lose the database with no loss of data type, and supports more
A session is stored as a central cache for data and Web clusters that are used primarily as cache databases.
2.6.16 a brief talk about Redis usage scenarios
Cache:
Place frequently-needed, infrequently-modified data into a fast-reading space (memory) so that the next visit reduces time, relieves stress, and reduces access time.
Counter:
Counters in Redis are atomic memory operations
Can solve the problem of inventory overflow. Invoicing System Inventory Overflow
Session Cache Server:
Web cluster as a session cache server
Cache queue, etc.
How to save 2.6.17redis objects
JSON string
You need to convert the object to a JSON string, and when the string is processed, set or get directly using set, get
Pros: Easy to set up and get
Cons: No specific method required to convert object to JSON (JSONLIB)
Bytes
Serialization is required to serialize the object to a byte save
If the data can be fully json, after all, Redis direct set, get using a lot lower threshold, Redis is not provided with a dedicated set object method, you need to rewrite.
If you're worried about the resource consumption of JSON-to-objects, there are a few things to consider,
1th: There is a performance problem with the JSON conversion Lib used
2nd: Is the data volume level, if the storage of millions big data objects, it is recommended to store the serialized object, if it is a small number of data-level objects, or not many data object fields, or it is recommended to use JSON to convert to string.
After all, Redis is well-optimized for storing character types, depending on the scenario you're using and how you use it.
2.6.18redis Data elimination mechanism
In Redis, Allowing users to set maximum memory size server.maxmemory is useful in memory-constrained scenarios, such as deploying 4 Redis service points on a 8G machine, allocating 1.5G of memory per service point, and reducing memory tension, resulting in more robust services.
Limited memory size required to maintain limited data
When the Redis memory dataset size goes up to a certain size, a data-retirement strategy is implemented, and Redis provides a 6 data-out strategy.
VOLATILE-LRU: Pick the least recently used data from the set of data sets (Server.db[i].expires) that have expired time
Volatile-ttl: Select the data that will expire from the set of expired data sets (Server.db[i].expires)
Volatile-random: Choose data culling from any data set (Server.db[i].expires) that has an expiration time set
ALLKEYS-LRU: Pick the least recently used data culling from the dataset (Server.db[i].dict)
Allkeys-random: Choose data culling from data set (SERVER.DB[I].DICT)
No-enviction (expulsion): Prohibition of eviction data
When Redis determines that a key-value pair is evicted, the data is deleted and the data change message is posted locally (aof persistent) and slave (master-slave connection).
2.6.19Java Accessing Redis
1. Accessing the Redis server using Jedis Java client is a bit like accessing MySQL through JDBC.
2, of course, if Spring is a cluster, you can use spring data to access redis,spring data is just two packages for Jedis
2.6.20redis Cluster
When a data fails to meet the requirements, it can be handled using a Redis cluster, similar to the read/write separation of MySQL
Java Interview ⑦ Advanced section